假設結構A和B是定義單結構如下:循環構造
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,但我想避免這樣做。有沒有更優雅的解決方案?
感謝,
山姆
您是否驗證了無限循環問題? – jdizzle