Ошибка компоновщика Singleton Implemenatatio - PullRequest
0 голосов
/ 08 сентября 2011
class Game
{
public:
    //! Returns the only instance of the game object
    static shared_ptr<Game> GetGameInstance();
    //! Function with continous loop for game play
    void GamePlay();
    //! The hidden constructor
    ~Game();

private:
    //! The hidden constructor
    Game();
    static shared_ptr<Game> _game;
};



//.cpp file

#include "Game.h"

shared_ptr<Game> Game::_game;

shared_ptr<Game> Game::GetGameInstance()
{
    if(_game == NULL)
    {
        _game.reset(new Game);
    }
    return _game;
}

void Game::GamePlay()
{
    shared_ptr<Graphics> myGameGraphics;

    while(!myGameGraphics->UserForcedExit())
    {
        myGameGraphics->drawMaze();
    }

}

Game::~Game()
{

}

У меня есть код выше, но компиляция выдает ошибку компоновщика:

Game.obj: ошибка LNK2019: неразрешенный внешний символ «private: __thiscall Game :: Game (void)» (?? 0Game @@ AAE @ XZ), на который ссылается функция «public: статический класс boost :: shared_ptr __cdecl Game: : GetGameInstance (void) "(? GetGameInstance @ Game @@ SA? AV? $ Shared_ptr @ VGame @@@ boost @@ XZ)

Может кто-нибудь помочь, пожалуйста ...

1 Ответ

0 голосов
/ 08 сентября 2011

попробуйте это:

shared_ptr<Game> Game::GetGameInstance()
{
    if(_game = NULL)
        _game = shared_ptr<Game>(new Game);

    return _game;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...