首先,如果這是一個新手問題,但我是初學者。 我的問題是我相信鑽石問題的一個變種。多繼承類中的虛函數
想象我有以下類別:
class A{ public: virtual foo();};
class B{ public: foo();};
class C{ public: foo();};
class D: public A, public B, public C{
public: foo();
};
我的問題是是否有可能調用從D
類foo()
和具有跨越A
,B
,C
和D
運行虛擬功能。我試過這個,但d::foo()
函數覆蓋了所有其他foo()
函數。
或者它是唯一可能的,如果你做一個1:2的繼承計劃?
class A{ public: virtual foo();};
class B: public A { public: foo();};
class C: public B { public: foo();};
class D: public C { public: foo();};
我之所以這樣問是因爲我希望能夠構建A
,B
和C
在不同的班級,而不必每次也A
或B
或C
構建但保留運行的虛擬功能的可能性而無需針對每種情況請求A::foo()
,B::foo()
,C::foo()
。
「我的問題是可以從D類調用foo()並讓虛擬函數在A,B,C和D上運行」你是什麼意思? – Brian
你問你是否可以調用D.foo()並讓它一次調用A.foo(),B.foo()和C.foo()? – bstar55
是bstar55。我想同時打電話給他們所有人。所以調用D.foo()會調用A.foo(),B.foo(),C.foo()和D.foo()。改變了這個問題,儘量減少混淆。 – hadroque