相關先前question,我現在下面的一個有B
是不完整的類型。解決方案是通過例如智能指針,通過B
的指針來改變B
。但添加指針會增加複雜性和資源消耗,因爲您不需要指針!避免循環依賴?</p> <p>在接下來的風景:</p> <pre><code>class B; class A { // stuff, methods and so on B b; }; class B { // stuff, methods and so on A a; }; </code></pre> <p>下面我們就<code>A</code>和<code>B</code>之間的循環依賴,但由於該代碼是形成不良的
在前面的question我試圖通過模板的方式避免使用指針,所以我在定義了兩個類的時候延遲了類的時間點,但是我無法成功地做到這一點。
難以避免指針嗎?有沒有衆所周知的設計避免循環依賴?
如果它編譯的話,這甚至沒有意義。你所說的是'A'的一個實例包含'B'的一個實例,而'B'的一個實例也包含'A'的一個實例。您需要無限量的內存和無限的時間來創建這樣的對象。也就是說,A的構造函數和B的構造函數都會無限遞歸。 – cdhowie 2013-04-11 17:05:43
你爲什麼試圖避免指針? – metalhead 2013-04-11 17:06:38
您也可以使用引用。 – dyp 2013-04-11 17:09:15