これは正常にコンパイルされますが、まだ実行してみたくありません。でも ...
//class base;
//class derived;
//class derived : public base;
class base {};
class derived : public base {};
class other
{
public:
void func() {base1 = derived1;}
base* base1;
derived* derived1;
};
void main()
{
}
... myneのプログラムで実行しなければならない同様のことがあるベースと派生の定義の上に他のクラスを移動すると、コンパイルエラーが発生します。
明らかな解決策は、コードの先頭にコメントアウトされたベースと派生を前方宣言することですが、これにより、ベース*と派生*の間で変換できないエラーが発生します。継承情報を含めて前方宣言を試みても機能しません。