次のコードをコンパイルしていました。
class B;
class A {
A();
friend A B::newAObject();
};
class B {
friend A::A();
public:
A newAObject();
};
これは奇妙に思えるかもしれませんが、アイデアはA、型のオブジェクトB(おそらくシングルトン) によってのみ生成できるクラスを持つことでした。
問題は、これらのオブジェクト間に循環依存関係を作成したことです。Aの前に定義する必要があり、 の前に定義するB必要BがありますA。どうやら前方宣言Bは十分ではなく、B実際には事前に完全に定義する必要がありますA(逆も同様です)。
どうすればこれを回避できますか?
編集:実際のエラーは次のとおりです:ネストされた名前指定子で指定された不完全な型 'B'。
注: ここに似た別の投稿があります:エラー: 入れ子になった名前指定子で使用される不完全な型ですが、非常にテンプレート化されており、混乱していたため、この投稿です。