1 つのファイルに 2 つのクラスを保持し、そのうちの 1 つに別のクラスのインスタンスを含める必要があります。したがって、ヘッダーファイルには次のようなものがあります。
class Box{
Item a,b,c;
/*
...
*/
}
class Item{
/*
...
*/
}
明らかにコンパイラは、それがどのアイテムか分からないと言っています。Item クラスを表示するにはどうすればよいですか?
1 つのファイルに 2 つのクラスを保持し、そのうちの 1 つに別のクラスのインスタンスを含める必要があります。したがって、ヘッダーファイルには次のようなものがあります。
class Box{
Item a,b,c;
/*
...
*/
}
class Item{
/*
...
*/
}
明らかにコンパイラは、それがどのアイテムか分からないと言っています。Item クラスを表示するにはどうすればよいですか?
Item クラス定義を class の上に移動するだけBox
です。これで、Box は完全なアイテム タイプを確認できるようになり、Box のメンバーとして有効になりました。
class Item{
/*
...
*/
}
class Box{
Item a,b,c;
/*
...
*/
}
コードの先頭に追加して、クラスを前方宣言することができます。
class Box;
class Item;
コンパイラは、クラスのすべてのデータ メンバーのサイズを認識している必要があることに注意してください。クラス定義を並べ替えて、ポインターなどを使用することを確認することができます...
生のポインター、参照、スマートポインターなどを使用したい場合があります...
これを試して:
class Item{
/*
...
*/
}
class Box{
Item a,b,c;
/*
...
*/
}