Bei Release funktionierst, aber bei Debug nicht



  • Hallo zusammen
    Ja ihr habt richtig gelesen!
    Ich habe ein Programm, das in der Release - Version zwar einwandfrei läuft, in der Debug Version jedoch nicht! Und zwar werden einfach die virtuellen Funktionen von abgeleiteten Klassen nicht aufgerufen, sprich, es wird die Version der Basisklasse aufgerufen. Was soll denn das ???

    Gruss Ishildur



  • RTTI vergessen? In den Einstellungen? 🙂



  • Bei vergessenem RTTI und dynamic_cast meckert doch eigentlich der Compiler, oder? Ansonsten sollte das mit dem RTTI doch eigentlich egal sein.



  • Aber das virtual braucht doch auch RTTI, oder? Da muss doch auch zur Laufzeit erkannt werden, was für ein Objekt ich vor mir habe.

    Ausprobieren / Überprüfen sollte man es mal, wenn man es nicht besser weiß (und ich weiß es nicht besser). 🙂



  • Ich muss vielleich auch noch erwähnen, dass es Anfangs ganz gut lief, und dann plötzlich nicht mehr. Jetzt funktioniert in beiden Versionen nichts mehr! Das Programm läuft zwar an sich einwandfrei, doch eben die virtuellen Methoden von abgeleiteten Klassen werden einfach nicht aufgerufen! Ich habe einen Breakpoint eine Zeile unterhalb des Methodenaufrufs gesetzt: Das Programm hält wie erwartet an. Danach habe ich einen Breakpoint innerhalb der Methode gesetzt: Das Programm hält nicht an, das Programm gelangt niemals an den Breakpoint ???

    Ich dachte mir, vielleicht ist die Projektdatei defekt, oder was weis ich. So habe ich ein neues Projekt erstellt und die Header, Source sowie Resourcendateien in das neue Projekt kopiert und so kompilliert, doch leider mit dem Selben Ergebnis. Anschliessend dachte ich, das möglicherweise der Kompiler defekt ist und habe das Ganze Projekt auf einem andern Computer kompilliert, ebenfalls mit dem selben niederschmetternden Ergebnis!! 😡 Was könnte ich denn noch ausprobieren, das Ganze macht mich noch Wahnsinnig. Ist zwar ein privates Projekt, umfasst aber inzwischen dennoch an die 3000 Zeilen Code. Und ich habe nicht vor, das Ganze in den Sand zu setzten!!!

    Gruss Ishildur



  • Nimm einfach alles raus, bis etwas kleiner minimaler Code übrigbleibt, den du dann hier posten kannst.



  • "virtual" braucht doch kein RTTI - die Pointer auf die virtuellen Funktionen werden doch in der vtbl der Klasse gespeichert. RTTI brauche ich nur, wenn ich "dynamic_cast", "typeid" oder "type_info" verwende. Oder hab ich da was falsch verstanden?


Anmelden zum Antworten