Mehrfachvererbung
-
Folgendes Codefragment liefert den Fehler: error: `base' is an ambiguous base of `dDer'
class base{}; class der1 : public base {}; class der2 : public base {}; class dDer : public der1, public der2 {}; int main() { base* b = new dDer(); return 0; }Aus welchem Grund funktioniert die Zuweisung nicht?
-
virtual.
Bye, virtual
-
Hoppla. Danke!
-
Aus welchem Grund funktioniert die Zuweisung nicht?
Den Grund hat dir dein Compiler bereits mitgeteilt. Die Erklärung: dDer besteht aus zwei base-Objekten. Eins resultiert aus der Vererbung über der1 und eins aus der Vererbung über der2. Da nun aber ein base-Objekt genausogut ist wie das andere ist die Konvertierung von dDer nach base mehrdeutig.