1
我現在正在學習C++虛擬派生中不確定性的不同情況。 但我有歧義的錯誤在我的代碼,我不知道這是原因......虛擬派生與轉換模糊
這裏是我的代碼:
class V {
public:
int v ;
};
class A {
public:
int a ;
};
class B : public A, public virtual V {
};
class C : public A, public virtual V {
};
class D : public B, public C {
public:
void f() ;
};
void g() {
D d ;
B* pb = &d ; // No Problem
A* pa = &d ; // Error: 'A' is ambiguous base of 'D'
V* pv = &d ; // No Problem
}
我不明白爲什麼我有這個錯誤,但我沒有錯誤的其他情緒。
謝謝:-)
謝謝。但是它們都是從A繼承而來的。那麼這種假裝有什麼問題呢?謝謝 – Copernic 2012-04-10 18:02:24
@Mehdi - D *不能*繼承A的兩個實例。想一想 - 如果A包含公共屬性「a」,那麼B和C都有一個屬性「a」。現在D有兩個屬性「a」 - 編譯器應該使用哪一個?它不能將它們合併 - 並不那麼簡單。這就是爲什麼它不能編譯。 – Alain 2012-04-10 18:04:29
Aaah。現在我明白了 !! 非常感謝你@Alain :) – Copernic 2012-04-10 18:08:23