Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#ifndef GAMESTATEMANAGER_HPP #define GAMESTATEMANAGER_HPP #include "GameStateInterface.hpp" class GameStateManager { private: int currentStateID; GameStateInterface * currentState; int nextState; public: GameStateManager(void); ~GameStateManager(void); GameStateInterface* GetGameState(); void SetGameState(int state); void changeState(); }; #endif |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#include "GameStateManager.hpp" #include "enum.hpp" #include "Application.hpp" #include "IntroState.hpp" GameStateManager::GameStateManager() { currentStateID = STATE_INTRO; nextState = STATE_INTRO; currentState = new IntroState(); } GameStateManager::~GameStateManager() { delete currentState; } GameStateInterface* GameStateManager::GetGameState() { return currentState; } void GameStateManager::SetGameState(int state) { nextState = state; } void GameStateManager::changeState() { if(this->currentStateID != this->nextState) { switch(this->nextState) { case STATE_EXIT: Application::GetInstance().GetWindow().Close(); break; } this->currentStateID = this->nextState; } } |
C-/C++-Quelltext |
|
1 2 |
GameStateManager gsm; EventManager evtm; |
Zitat
Möglichst wenig Code mit dem selben Fehler ist ganz leicht. Alles auskommentieren was nicht mit EventManager zu tun hat. Ergo nur noch Application, main-Funktion und EventManager. Trotzdem kann der Fehler dann im selben Moment wieder weg sein.
Zitat von »"Môr"«
GameStateManager ruft im Konstruktor IntroState auf das im Konstruktor evtm aufruft. Wenn gsm vor evtm steht ist evtm ja noch nicht erstellt worden.
Zitat
Ich kann dir leider keine genau Zeile sagen. Das passiert alles im Disambley.
Zitat
Eine Ausnahme (erste Chance) bei 0x003e3ac0 in BBAW_v3.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.
Unbehandelte Ausnahme bei 0x003e3ac0 in BBAW_v3.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000000.
Zitat
> BBAW_v3.exe!std::list<EventObserver *,std::allocator<EventObserver *> >::clear() Zeile 832 + 0xf Bytes C++
BBAW_v3.exe!std::list<EventObserver *,std::allocator<EventObserver *> >::_Tidy() Zeile 1214 C++
BBAW_v3.exe!std::list<EventObserver *,std::allocator<EventObserver *> >::~list<EventObserver *,std::allocator<EventObserver *> >() Zeile 522 C++
BBAW_v3.exe!Application::~Application() + 0x57 Bytes C++
BBAW_v3.exe!`Application::GetInstance'::`2'::`dynamic atexit destructor for 'app''() + 0x28 Bytes C++
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
class EventObserverInterface { public: virtual void GetEvent(const sf::Event& event) = 0; virtual ~EventObserverInterface () {} // <-- wichtig!! }; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
while(GetWindow().GetEvent(event)) { if(event.Type == sf::Event::Closed) GetWindow().Close(); //GetEventManager().notify(event); } |
Werbeanzeige