と仮定構造体:環状コンストラクタ
struct A
{
B& b_;
static A& shared_a() { ... }
A() : b_(B::shared_b()) { ... }
};
struct B
{
A& a_;
static B& shared_b() { ... }
B() : a_(A::shared_a()) { ... }
};
コードをコンパイルするようにファイル構造が編成されると仮定する。
A :: shared_aが初めて呼び出されると、Aの共有インスタンスが構築されます.Aの共有インスタンスのコンストラクタはB :: shared_bを呼び出し、Bの共有インスタンスを作成します。次に、 Bの共有インスタンスのコンストラクタはA :: shared_aを呼び出します。ただし、Aの共有インスタンスはコンストラクタを終了していません。したがって、これらのコンストラクタは無限にループします。
このようなループを防ぐために、クラスAとクラスBをマージすることができましたが、そうしないでください。より洗練されたソリューションはありますか?あなたは(shared_aを与える方法について
おかげで、
サム
無限ループの問題を確認しましたか? – jdizzle