次のコードをコンパイルしていました。
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'。
注: ここに似た別の投稿があります:エラー: 入れ子になった名前指定子で使用される不完全な型ですが、非常にテンプレート化されており、混乱していたため、この投稿です。