比方說,我們有如下代碼:虛擬繼承和簽名重疊
struct A{
virtual ~A(){}
void f(){
p = 42;
}
int p;
};
struct B : public virtual A{};
struct C : public virtual A{};
struct D : public B, public C, public A{}; //let's add non-virtual inheritance
int main(){
D* pA = new D();
pA->A::f(); //!
return 0;
}
有什麼辦法,設P 42最基類? 以下建設pA-> A :: f();爲非虛擬繼承類A設置p爲42。我們可以在沒有轉換的情況下執行此操作嗎?
究竟是什麼問題?繼承幾乎意味着你得到一個A的實例... – 2012-03-18 14:41:47