ultddave
Legacy Member
Hey allemaal,
Zit eigenlijk met een redelijk simpel probleem, maar zie door het bos de bomen even niet meer.
Taal: C++
Het gaat namelijk om een GameStateManager die uit 2 klassen bestaat:
- GameStateManager (deze include State.h en houdt een lijst van States bij (std::list<State*>))
- State (bevat een referentie naar de manager en gebruikt dus een forward declaration naar de manager, maar include deze niet.)
Maar ik krijg het nog niet gecompileerd.
Dus herhaling;
In State.h doe ik "class GameStateManager;" en in de GameStateManager.h doe ik #include "State.h".
Of iemand een alternatief voorstel hoe ik een gamestatemanager zou implementeren? Observer pattern zou in principe ook mogelijk zijn maar zal ook voor problemen zorgen met includes.
Stukje code uit State.h:
Ik weet dat je met forward declarations pointers moet gebruiken en dergelijke, maar om één of andere reden lukt het in dit geval niet. Hulp en tips zijn welkom, dank bij voorbaat.
Mvg,
Dave
Zit eigenlijk met een redelijk simpel probleem, maar zie door het bos de bomen even niet meer.
Taal: C++
Het gaat namelijk om een GameStateManager die uit 2 klassen bestaat:
- GameStateManager (deze include State.h en houdt een lijst van States bij (std::list<State*>))
- State (bevat een referentie naar de manager en gebruikt dus een forward declaration naar de manager, maar include deze niet.)
Maar ik krijg het nog niet gecompileerd.
Code:
./build/Debug/MinGW_Qt-Windows/GameStateManager.o: In function `~State':
State.h:22: undefined reference to `vtable for State'
Dus herhaling;
In State.h doe ik "class GameStateManager;" en in de GameStateManager.h doe ik #include "State.h".
Of iemand een alternatief voorstel hoe ik een gamestatemanager zou implementeren? Observer pattern zou in principe ook mogelijk zijn maar zal ook voor problemen zorgen met includes.
Stukje code uit State.h:
Code:
class GameStateManager;
class State{
public:
State() { /* voorlopig nog leeg*/ }
~State() { /* voorlopig nog leeg*/ } <= State.h:22 waar undef. ref. is
public:
....
protected:
GameStateManager *m_stateManager;
};
Ik weet dat je met forward declarations pointers moet gebruiken en dergelijke, maar om één of andere reden lukt het in dit geval niet. Hulp en tips zijn welkom, dank bij voorbaat.
Mvg,
Dave
.