GameEngine object doet rare dingen

Status
Niet open voor verdere reacties.

turbello

Gebruiker
Lid geworden
23 nov 2011
Berichten
25
Hallo,

Ik ben nu momenteel bezig aan mijn game engine te schrijven maar ik krijg iets enorm raar.

Dit is zonder andere commentaar en code de basis wat ik nu test. Ik wil de X-positie verkrijgen.
Code:
GameEngine engine = GameEngine::GetInstance();
engine.StartUp( 640, 480, "Painter Applcation", 60 );

POINT pos = engine.GetMousePos();
stringstream ss;
ss << pos.x;
OutputDebugString( ss.str().c_str() );
OutputDebugString( "\n" );

engine.Shutdown();

Dit is de code om de positie te verkrijgen in de WndProc:
Code:
m_GameEngine.m_pMousePos.x = static_cast<int>( LOWORD(lParam)*scaleX );
m_GameEngine.m_pMousePos.y = static_cast<int>( HIWORD(lParam)*scaleY );

Ik krijg de juiste positie als ik daar een break point zet. Maar het rare probleem is nu.. In de main waar ik de positie opvraag krijg ik telkens 0 :confused:

En nu het nog meer rare. Als ik nu die X-positie in de GameEngine constructor op 100 initialiseer krijg ik in de main telkens 100 :shocked:


Zijn er nu 2 objecten van de GameEngine? Ik heb nochtans maar 1 gemaakt.
Deze maak ik aan: 'GameEngine m_GameEngine;'
Code:
static GameEngine& GetInstance() { return m_GameEngine; }

Dit is hoe ik de positie return:
Code:
inline const POINT& GetMousePos() const { return m_pMousePos; }
Zodra ik dit doe:
Code:
inline const POINT& GetMousePos() const { return m_GameEngine.m_pMousePos; }
Dan werkt het WEL!! :shocked:

Ik zou wel hulp kunnen gebruiken want ik zit hier veel tijd te verliezen :(
 
Nvm, ik ga compleet anders werken :-)
Zonder singleton en alles werkt nu.
 
Een static member staat los van een instantie van het object en heeft daarom dus ook geen toegang tot de onderdelen die bij een instantie horen. Aan je code te zien verwacht ik dan ook dat je m_GameEngine ook static hebt gemaakt, aangezien ik anders zou verwachten dat GetInstance() een error zou geven bij het aanspreken van m_GameEngine. En een static m_GameEngine zou ook het probleem met GetMousePos() verklaren (m_MousePos is immers onderdeel van een instantie van een object).
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan