2010-06-24 91 views
0

嗨,我有一個問題,我嘗試做如下,A級取決於B類,反之亦然這樣正向類friend聲明

class A; 

class B{ 
    A foo; 
    friend B A::doSomething(); 

}; 

class A { 
    B bar; 
    B doSomething; 
}; 

的朋友declartion不起作用,因爲A是一個不完整的declartion上。有什麼辦法可以避免這種情況? (Swapp類聲明的順序是不是一個解決方案,我並不想構建一個更爲複雜的例子,其中交換不工作)

+1

*有什麼辦法可以避免這種情況?*首先避免循環依賴。其餘的將自行消失。你需要解決哪些問題,你認爲你需要這種依賴關係? – 2010-06-24 23:28:35

回答

6

什麼你要現在做會使你的類無限大(如據我所知,barfoo是類成員變量,因此這意味着B包括A,其中包括B,...)。

你可以使用指針和存儲A* fooB* bar類中的一種或以某種方式重新設計應用程序來避免這種循環依賴。

0

嵌套兩個類。這給出了關於何時何地聲明和定義什麼的更有利的規則。

此外,我懷疑你的設計可能只是borked。您可能需要發佈A和B的實際內容,以便我們提供更多建議。