3

可能重复:
C++ 中的纯虚析构函数

我有两个类:抽象的“Game”类和派生的“TestGame”类。TestGame 中的所有功能都是单独实现的(为了让它编译)。我只收到一个错误:

TestGame.obj:错误 LNK2019:未解析的外部符号“public:virtual __thiscall Game::~Game(void)”(??1Game@@UAE@XZ)在函数“public:virtual __thiscall TestGame::~TestGame(void)”中引用" (??1TestGame@@UAE@XZ)

这是我的类定义:

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();
};

我已经尝试了几件事,但我觉得也许我错过了一些关于抽象和派生类如何工作的基本知识。

4

1 回答 1

12

您实际上需要为基类定义析构函数,即使它是纯虚拟的,因为它将在派生类被销毁时调用。

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

= 0for pure virtual 不是必需的,因为您有其他纯虚函数来使您的类抽象。

于 2010-12-07T18:24:17.233 回答