1

1 つのファイルに 2 つのクラスを保持し、そのうちの 1 つに別のクラスのインスタンスを含める必要があります。したがって、ヘッダーファイルには次のようなものがあります。

class Box{
    Item a,b,c;
    /*
    ...
    */
}

class Item{
    /*
    ...
    */
}

明らかにコンパイラは、それがどのアイテムか分からないと言っています。Item クラスを表示するにはどうすればよいですか?

4

3 に答える 3

8

Item クラス定義を class の上に移動するだけBoxです。これで、Box は完全なアイテム タイプを確認できるようになり、Box のメンバーとして有効になりました。

class Item{
    /*
    ...
    */
}

class Box{
    Item a,b,c;
    /*
    ...
    */
}
于 2013-07-29T09:29:27.040 に答える
3

コードの先頭に追加して、クラスを前方宣言することができます。

 class Box;
 class Item;

コンパイラは、クラスのすべてのデータ メンバーのサイズを認識している必要があることに注意してください。クラス定義を並べ替えて、ポインターなどを使用することを確認することができます...

生のポインター、参照、スマートポインターなどを使用したい場合があります...

于 2013-07-29T09:29:06.477 に答える
2

これを試して:

class Item{
    /*
    ...
    */
}

class Box{
    Item a,b,c;
    /*
    ...
    */
}
于 2013-07-29T09:29:36.997 に答える