Zuweisungsoperator und Polymorphie
-
Hi,
mein Programm wirft bei einer Zuweisung immer wieder eine Ausnahme, ich verstehe nicht warum ..

Der Kode sieht prinzipiell so aus:class Basis; class Derived : public Basis { /*..*/ } const Basis* getSome(); // Irgendwo im Kode Derived* pDerived = new Derived(); // Jetzt wird gleich eine Ausnahme geschmissen .. *pDerived = *(dynamic_cast<const Derived*>(getSome()));Den Compiler und Linker freud der Kode, aber beim Aufrufen hängt's. Wo ist der Fehler?
-
Ja was tut denn getSome()?
Was für eine Exception bekommst Du denn?
-
Und welche? bad_cast? Dann ist doch alles klar.
Bye, TGGC (Demo or Die)
-
Da wird kein bad_cast geworfen, sondern nen NULL-Zeiger zurückgeliefert und den dereferenzierst du.
-
Asche auf mein Haupt...

Die Funktion getSome() steht in einer Klasse, welche mehrere Konstrukturen besitzt, wobei nicht alle schon ausgefüllt waren. In diesem konkreten Fall war der Zeiger, den getSome() zurückgibt, noch nicht initialisiert.
Fange erst an, Zeiger einzusetzen, lässt sich nicht vermeiden.
Dachte, es muss an der Zuweisung liegen, da der Debugger mir einen Zuweisungsoperator als Quelle für die Ausnahme anzeigte.Grüsse,
don_basto.