2010-12-07 27 views
2

Possible Duplicate:
Pure virtual destructor in C++エラーLNK2019抽象クラス

で仮想デストラクタは、私は2つのクラスがあります。 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

「デストラクタ」を意味すると思います。 –

+0

@ノア:おっと、うん。ありがとう。 –

+1

空の実装も提供する場合は、= 0は必要ありません(ほとんど違和ではありませんが、少し混乱させるだけです)。 –