Hallo Community,
ich habe ein Spiel mit der TriBase-Engine angefangen zu programmieren. Alles läuft soweit gut, bis ich heute meine Init() und Exit() Methoden in (De-)Konstruktor umschreiben wollte. Mein Dekonstruktorcode sieht folgendermaßen aus:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
|
BlockWorld_Main::~BlockWorld_Main()
{
SetState(BlockWorld_State::None);
tbDirect3D::Instance().Exit();
tbExit();
}
|
Im Debugger werden alle drei Schritte Fehlerfrei ausgeführt, nur wenn zur "}" gesprungen wird, bekomme ich folgende MessageBox:
Unbehandelte Ausnahme bei 0x5930c5b4 in Main.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xfeeefef6.
Versuchsweise hab ich mal den letzten Befehl "tbExit();" auskommentiert - und siehe da, der Fehler ist weg!? Aber das kann ich doch nicht so lassen, die Engine muss doch ornungsgemäß beendet werden, oder nicht!? "tbExit();" wird an keiner anderen Stelle im Programm aufgerufen. Der Dekonstruktor wird durch "delete" aufgerufen.
Wenn ich die drei Befehle über eine "Exit()"-Methode aufrufe und danach dann "delete" (mit leerem Dekonstruktor), dann funktionierts.
Fragt nicht warum ich das anders machen will - es ist ein Test, obs einfacher geht! Und jetzt nicht Antworten: "Na siehste doch was einfacher geht".
Ich hab die Forumssuche bemüht, doch nichts passendes gefunden. Wenn ich trotzdem was übersehen haben sollte, dann sagt Bescheid!
Wer kann mir helfen? Ich benutze Visual Studio 2010 Professional und Win7.
Danke schonmal für eure Hilfe.