Ich lerne jetzt die verschiedenen Situationen der Ambiguität in der virtuellen Ableitung auf C++. Aber ich habe einen Fehler von Mehrdeutigkeit in meinem Code und ich verstehe nicht, es Grund ist ...virtuelle Ableitung & Konvertierung mehrdeutig
Hier ist mein Code:
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
}
Ich verstehe nicht, warum ich zu tun habe Dieser Fehler hat jedoch keine Fehler für die anderen Affektierungen.
Danke :-)
Danke. Aber beide sind von A geerbt. Was ist das Problem mit dieser Affektiertheit? Danke – Copernic
@Mehdi - D * kann nicht zwei Instanzen von A erben. Denken Sie darüber nach - wenn A eine öffentliche Eigenschaft "a" enthält, dann haben sowohl B als auch C jeweils eine Eigenschaft "a". Jetzt hat D zwei Eigenschaften "a" - welche sollte der Compiler verwenden? Es kann sie nicht einfach zusammenführen - so einfach ist das nicht. Deshalb kann es nicht kompiliert werden. – Alain
Aaah. Jetzt verstehe ich !! vielen Dank @Alain :) – Copernic