VC++ で、例えば次のような書き方をしたとする。
class Test2;// 宣言
class Test1
{
public:
Test1();
~Test1();
Test2 m_test2; // ← Test2 をメンバに持たせる。
};
class Test2
{
public:
Test2();
~Test2();
};
すると、
error C2079: ‘Test1::m_test2’ が 未定義の class ‘Test2’ で使用しています。
というコンパイルエラーになる。
これは
class Test2;// 宣言
class Test1
{
public:
Test1();
~Test1();
Test2 *m_test2; // ← ポインタにする。
};
class Test2
{
public:
Test2();
~Test2();
};
とすればコンパイルは通る。
もしくは、Test2 を Test1 より先に書く。
参考:
コンパイラ エラー C2079
コメント