2010-12-07 2 views
2

Possible Duplicate:
Pure virtual destructor in C++ошибка LNK2019 - Виртуальный деструктор в абстрактном классе

У меня есть два класса: абстрактный «Игра» класс и производный класс «TestGame». Все функции в TestGame реализованы отдельно ни к чему (ради того, чтобы получить его для компиляции). Я только получаю одну ошибку:

TestGame.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall Game::~Game(void)" ([email protected]@[email protected]) referenced in function "public: virtual __thiscall TestGame::~TestGame(void)" ([email protected]@[email protected])

Вот мои определения классов:

class Game 
{ 
public: 
    virtual ~Game(void) = 0; 

    virtual bool Initialize() = 0; 
    virtual bool LoadContent() = 0; 
    virtual void Update() = 0; 
    virtual void Draw() = 0; 
}; 

class TestGame: public Game 
{ 
public: 
    TestGame(void); 
    virtual ~TestGame(void); 

    virtual bool Initialize(); 
    virtual bool LoadContent(); 
    virtual void Update(); 
    virtual void Draw(); 
}; 

Я пробовал несколько вещей, но я чувствую, что может быть, я что-то отсутствует фундаментальное о том, как абстрагирование и получение классы работают.

ответ

10

Вам действительно нужно определить деструктор базового класса, даже если он является чисто виртуальным, так как он будет вызываться, когда производный класс будет уничтожен.

virtual ~Game() { /* Empty implementation */ } 

= 0 для чистой виртуальной не является необходимым, так как у вас есть другие чистые виртуальные функции, чтобы сделать свой класс абстрактным.

+0

Я предполагаю, что вы имели в виду «деструктор». – 2010-12-07 18:29:54

Смежные вопросы