2013-03-15 66 views
0

這裏的情況是:訪問基類構件內派生

class Base 
{ 
object* mainObject; 
} 

class Derived : 
public Base 
{ 
class aTrain 
{ 
    void* something; 
    . 
    . 
    . 
    ~aTrain() 
    { 
    mainObject->destroyingMethod(something); 
    } 
}; 
} 

輸出:的非靜態成員參考必須相對於特定對象。

我可以理解這個問題,但我怎麼能解決這個問題,而不需要將Derived類傳遞給aTrain構造函數?

回答

1

如果不將mainobject中的某些參考文件傳遞給aTrain,則無法解決此問題。無論您是通過將Derived對象的引用傳遞給aTrain的構造函數,還是通過將mainobject的引用傳遞給aTrain,通過aTrain的成員函數或任何其他可能的組合都由您決定。

的事情是,有一個內部類訪問,它是包含在類的非靜態成員沒有含蓄的方式。

2

定義aTrainDerived影響的範圍和訪問類型aTrain

這並不意味着每個aTrain都有一個關聯的Derived。可以有任何數量的aTrain實例和單獨的任何數量的Derived實例。

所以,如果你想每aTrain知道一些Derived實例,你將不得不實現,與一個指針或引用成員。