-3

SuperClass "BoardMain" と、このメイン関数のサブクラスである 6 つのメンバーがあります。

ただし、サブクラスの 1 つで特定の関数を呼び出そうとすると、エラーが発生します。

「抽象型のオブジェクトを割り当てることができません」

サブクラスの1つで特定の関数を呼び出す必要がある「BoardMAin」スーパークラスにのみアクセスできます。

助けてください

Class Someother
{
  Boardmain.functionA();
}


class BoardMain
{
functionA 
{
   B();
}

}

Class B1:public BoardMain() 
{
B(){
}
}
4

2 に答える 2

2

コード内のすべてのエラーを説明しようとします:

Class Someother
{
    Boardmain.functionA(); // Error 1
}


class BoardMain
{
    functionA // Error 2
    {
       B();   // Error 3
    }

}

Class B1:public BoardMain() // Error 4
{
    B(){ // Error 5
    }
}

エラー 1

クラス内で直接メソッドを呼び出していますが、C++ では不可能です。メソッドから呼び出します。

別のクラスからメソッドを静的に呼び出そうとした後は、オブジェクトのインスタンスではありません。ここで選択する必要があります:

  • Boardmainキーワードを使用して、このメソッドをクラスで静的に宣言しますstatic
  • のインスタンスを作成しBoardmain、メソッドを呼び出します。例:

    class Someother
    {
    public:           // public accessibility
        Someother()   // Constructor of the class
        {
            Boardmain obj;     // Object creation
            obj.functionA();   // Calling the method
        }
    };
    

最後に、クラスを宣言している時点Someotherで、クラスBoardmainはまだコンパイラに認識されていません...ここでエラーが発生します...

エラー 2

戻り値の型も引数もなしで関数を宣言していますが、これも C++ では不可能です。コンストラクタには少なくとも()が必要です。

この例は正しいです:

class BoardMain
{
    void functionA() // Does not return anything and does not take argument
    {
    }
};

エラー 3

という名前の関数を呼び出してBいますが....それは何ですか?? B1?で宣言されたメソッド

エラー 4

クラスが別のクラスを継承する場合、正しい宣言は次のとおりです。

class B1:public BoardMain  // no () a the end

エラー 5

繰り返しますが、このメソッドを正しく宣言していません。コンストラクターにしたい場合は、クラスと同じ名前にする必要があります。

class B1 : public BoardMain
{
    B1(){    // Private constructor
    }
};

ちなみに、classキーワードはC ++では常に小文字です。classまた、宣言の最後にはセミコロンがあります。


C++ を学ぶには良い本を買うべきです。それが必要なようです。

に関するドキュメントは次のclassとおりです。 http://www.cplusplus.com/doc/tutorial/classes/

于 2013-08-16T19:45:11.973 に答える