Hallo hab wieder ein Problem mit dem EventReceiver ^,^'
Ich habe mein Programm etwas umzustrukturiert und eine game klasse erstellt.
In dieser erstelle ich das device und möchte auch den EventReceiver festlegen
In einer Funktion habe ich dort folgendes stehen:
Code:
IEnumStructure::SAppContext context;
context.device = device;
StartmenuEventReceiver receiver(context);
device->setEventReceiver(&receiver);
-> Dies steht in der funktion CreateStartmenu()
Meine main() funktion sieht also so aus:
Code:
int main()
{
CGame Game;
// Init game
Game.Init();
// Create scene
Game.CreateStartmenu();
// Main Loop
while(Game.device->run())
{
Game.MainLoop();
}
// Clean up memory
Game.Finish();
return 0;
}
Wenn ich es nun starte, kommt diese fehlermeldung:
Zitat:
Eine nicht behandelte Ausnahme des Typs "System.AccessViolationException"....
Dabei liegt der Zeiger auf dem Code
Code:
if (UserReceiver)
absorbed = UserReceiver->OnEvent(event); //Hier scheint der fehler aufzutreten
(Im cirrdevicestub.cpp / Funktion: bool CIrrDeviceStub::postEventFromUser(const SEvent& event))
Verschiebe ich das setzten des EventReceivers wieder in die main funktion
Code:
int main()
{
CGame Game;
// Init game
Game.Init();
// Create scene
Game.CreateStartmenu();
IEnumStructure::SAppContext context;
context.device = Game.device;
StartmenuEventReceiver receiver(context);
Game.device->setEventReceiver(&receiver);
// Main Loop
while(Game.device->run())
{
Game.MainLoop();
}
// Clean up memory
Game.Finish();
return 0;
}
Funktioniert alles ^.^
Bin irgentwie noch etwas zu doof für c++ - hab ich so das gefühl, hat jemand ne ahnung, ob ich dies auch in der funktion einsetzten kann?