2013-05-18 25 views
0

如何從類D中使用類A中的函數而不繼承類A和(儘管我明白這是不好的做法,我不允許改變繼承)而不是在D中刪除C和B的繼承?我似乎無法找到解決方案的請求成員是模棱兩可的錯誤。我的理解是(錯誤地),無論相去甚遠如何瞭解如何在C++中解決含糊不清的成員請求

class A 
{ 
public: 
    void DoEverything(int){ } 
}; 

class B : public A 
{ 
public: 
    ... 
}; 

class C : public A 
{ 
public: 
    ... 
}; 

class D : public C : public B 
{ 
public: 
    ... 
}; 

int main() 
{ 
    D dMan; 
    int i = 2; 

    dMan.DoEverything(i); 
} 

我的例子是鬆散的基礎上的「不明確的基類(僅限於C++)」的例子在這裏找到:http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/topic/com.ibm.xlcpp8a.doc/language/ref/cplr138.htm#cplr138但是這並沒有幫助我瞭解問題。

+1

您正面臨鑽石繼承問題。看看這篇文章:http://stackoverflow.com/questions/379053/diamond-inheritance-c –

回答