del_4901
2006-05-21, 21:25:52
Compiler MSVC 2005 (native C++)
Das sind die Tiefpunkte im Leben eines jeden Programmierers.
Ich hab schon versucht das Konstukt nachzustellen, aber da läuft es. Ich hab einen Ableitungsbaum mit mehreren virtuellen Funktionen.
object
|
------------------------------------------------------------------------------
| | | | | |
gfxobject queue Renderer camera Event Guardian
| | |
----------- pointedcam -------------------
| | | | |
nprimetiv light Keyboard Mouse ...
|
pointlight
alle erben von object:
virtual void handle() = NULL; (ist nur in object abstrakt)
einige noch "unfertige" Klassen besitzen nur sowas:
virtual void handle(){}
das tolle an der ganzen sache ist, es hat solange funktioniert, bis ich die handel-funktionen in den Events ausformulieren wollte. Jetzt called er mir immer die falsche Funktion ... z.B im Debug build called er mir handle() aus Event. Im Releasebuild called er mir handel() aus queue.
Wenn ich Queue nicht von object erben lass called er mir im Releasebuild handle() von gfxobject.
er macht das sogar wenn ich handel kurz nach dem erzeugen des Events aufruf. Sprich der Zeiger hat noch den Typ von Keyboardevent etc. Da ist noch gar niks gecasted worden weder implizit noch anders.
Woran könnte das liegen?
den ganzen Code zu posten währ Hardcore und ich weiß auch nicht welche Abschnitte dafür verantwortlich sein könnten.
Und Nachstelln ist nicht, da läuft alles wunderbar.
und implzit auf object* casten hat auch niks gebracht (war auch nicht anders zu erwarten ^^)
Das sind die Tiefpunkte im Leben eines jeden Programmierers.
Ich hab schon versucht das Konstukt nachzustellen, aber da läuft es. Ich hab einen Ableitungsbaum mit mehreren virtuellen Funktionen.
object
|
------------------------------------------------------------------------------
| | | | | |
gfxobject queue Renderer camera Event Guardian
| | |
----------- pointedcam -------------------
| | | | |
nprimetiv light Keyboard Mouse ...
|
pointlight
alle erben von object:
virtual void handle() = NULL; (ist nur in object abstrakt)
einige noch "unfertige" Klassen besitzen nur sowas:
virtual void handle(){}
das tolle an der ganzen sache ist, es hat solange funktioniert, bis ich die handel-funktionen in den Events ausformulieren wollte. Jetzt called er mir immer die falsche Funktion ... z.B im Debug build called er mir handle() aus Event. Im Releasebuild called er mir handel() aus queue.
Wenn ich Queue nicht von object erben lass called er mir im Releasebuild handle() von gfxobject.
er macht das sogar wenn ich handel kurz nach dem erzeugen des Events aufruf. Sprich der Zeiger hat noch den Typ von Keyboardevent etc. Da ist noch gar niks gecasted worden weder implizit noch anders.
Woran könnte das liegen?
den ganzen Code zu posten währ Hardcore und ich weiß auch nicht welche Abschnitte dafür verantwortlich sein könnten.
Und Nachstelln ist nicht, da läuft alles wunderbar.
und implzit auf object* casten hat auch niks gebracht (war auch nicht anders zu erwarten ^^)