この2つのクラスが同じ ".h"ファイルで宣言されている場合、このビットのコードを動作させるにはどうすればよいですか?彼らは別のものにあればそれを働かせるには?宣言されていないクラスのクラスメンバー
簡単な質問ですが、グーグルが私を助けませんでした。
class Container
{
Piece p;
public:
Container() :p(this) {};
};
class Piece
{
Container* cont;
public:
Piece(Container * c) :cont(c) {};
};
なぜ私は最初のピースを宣言し、そのコンテナの後にすることはできませんか?宣言の順序に依存しない、それを行う方法はありますか? – Shocky2
@ shocky2 'Piece'は' Container'へのポインタを保持するので、ポインタは不完全な型を持つことが許されますが、 'Container'は' Piece'オブジェクトを持ち、オブジェクトは不完全であることは許されません。不完全な型は、前方宣言された型です。 –
あなたは先に宣言しています。最初にピースを宣言してください... – CIsForCookies