[c++] Polymorphie - Problem Vererbung

radazong

Mitglied
Hello again!
Also, ich habe da mal eine Frage bezüglich Polymorphie. Undzwar habe ich drei Klassen:

1.) Entry (Basisklasse mit virtuellen Funktionen)
2.) MovieEntry (Erbt von Entry überschreibt die Funktionen wiederrum virtuell)
3.) SerieEntry (Erbt von MovieEntry überschreibt wiederum die Funktionen)

In jeder dieser Klassen gibt es eine Funktion "Store()", die die Einträge in eine Datei schreibt. Soweit so gut. Wenn ich jetzt jeweils Objekte dieser Klassen erzeuge, wird auch alles astrein in die gewünschten Dateien geschrieben.
Wenn ich nun jedoch versuche den Polymorphismus durch Zeiger zu nutzen, klappt es garnicht mehr....jetzt meine Frage : "Häh?" ^^ Naja, ist vielleicht nicht so aufschlussreich. Am besten zeige ich mal etwas Code :
C++:
MovieEntry *test1=new MovieEntry("1","Test","Nur ein doofer Test","5 Sterne","Quatsch");
 SerieEntry *test2=new SerieEntry("1","Test","Nur ein doofer Test","5 Sterne","Quatsch","Staffel 1");
 
 Entry *test=test1;
 test->Store();      //Funktioniert nicht :(

test1->Store();     //Funktioniert einwandtfrei
 
 delete test1;
 delete test2;

Naja, der direkte Aufruf der Funktion über den Pointer funktioniert. Wenn ich jedoch versuche über einen Entry-Zeiger die Polymorphie zu nutzen funktioniert dies nicht. Was mache ich nur falsch?!

Ich hoffe ich konnte mein Problem gut genug schildern.

Greetz,
RadaZOng
 
Zuletzt bearbeitet von einem Moderator:
Ohja, Entschuldigung.
Mit "funktioniert nicht" meine ich, dass keine Datei erstellt bzw. nichts angehängt wird.
Kein Programmabsturz oder so, es ist einfach als hätte ich die Funktion garnicht aufgerufen.

Die Deklaration der Funktion sieht wie folgt aus:
C++:
virtual bool Store(std::string name="../pfad, etc");

Ich denke nicht dass es an dem Defaultparameter liegt, oder? Bei direktem Funktionsaufruf über ein Objekt der Klasse funktioniert ja auch alles einwandtfrei.
Der Name ist auch nur ein Alias - im Programm steht dort ein richtiger Pfadname.
 
Zuletzt bearbeitet von einem Moderator:
Hallo!

Nur zur kurzen Info - Das Problem hat sich mittlerweile erledigt. Jetzt fragt bitte nicht woran es lag, denn das weiss ich immernoch nicht. Ich habe experimentell in den Klassen gebastelt, und von jetzt auf gleich gabs total grundlos beim kompilieren Fehlermeldungen in Bezug auf die virtual-table dieser Klassen.

Nachdem ich im Netz nichts zu diesem Error gefunden hatte, habe ich einfach sämtliche Header und Sources gelöscht und mühsam GENAUSO wie vorher neu-getiggert.
Nicht nur dass danach der Error weg war, die Polymorphie mit Objekten meiner Klassen funktioniert nun wie ich mir das vorgestellt habe ^^.

Ob das wohl an DevCpp liegt, oder am g++ Compiler oder am Linker.... Ich habe keine Ahnung! Vielleicht hat ja jemand einen Tipp für eine neue tolle IDE. Am besten
-Freeware
-mit integriertem Compiler und Debugger
-NICHT VC Express 2005^^

Mit freundlichen Grüßen,

RadaZOng
 
Vielleicht hat ja jemand einen Tipp für eine neue tolle IDE. Am besten
-Freeware
-mit integriertem Compiler und Debugger
-NICHT VC Express 2005^^
Zwei ganz brauchbare Alternativen wären Code::Blocks und Eclipse CDT. Wobei ich aber glaube, dass man bei beiden die Compiler-Toolchain händisch einrichten muss. Allerdings gibt es da noch Wascana, das Eclipse CDT und eine MinGW-Toolchain installiert, sodass man gleich „out of the box“ loslegen kann.

Grüße,
Matthias
 
Zurück