私は、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
}
私が持っていない理由を私は理解していない:
はここに私のコードです しかし、私は私のコードではあいまいの誤差を持っていると私はそれが理由です理解していません...このエラーは、私は他の影響のためのエラーはありません。
は、これが完全にmultiple inheritanceの場合に期待されている:-)
ありがとうを読んで示唆しています。しかし、どちらもAから継承されています。だから、この影響の問題は何ですか?ありがとう – Copernic
@Mehdi - D *はAの2つのインスタンスを継承することはできません。それについて考える - Aにパブリックプロパティ "a"が含まれる場合、BとCはそれぞれプロパティ "a"を持ちます。現在、Dには2つのプロパティ "a"があります - コンパイラはどちらを使うべきですか?それをマージするだけでは簡単ではありません。それがコンパイルできない理由です。 – Alain
Aaah。今分かります !! ありがとうございます@Alain :) – Copernic