关于c ++:错误LNK2019 – 抽象类中的虚拟析构函数

error LNK2019 - Virtual destructor in abstract class

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Pure virtual destructor in C++

我有两个类:抽象的"game"类和派生的"testgame"类。testgame中的所有函数都单独实现为零(为了让它编译)。我只收到一个错误:

TestGame.obj : error LNK2019:
unresolved external symbol"public:
virtual __thiscall Game::~Game(void)"
(??1Game@@UAE@XZ) referenced in
function"public: virtual __thiscall
TestGame::~TestGame(void)"
(??1TestGame@@UAE@XZ)

以下是我的类定义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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();
};

我尝试过一些东西,但我觉得我可能遗漏了一些关于抽象和派生类如何工作的基本知识。


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

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

纯虚拟的= 0是不必要的,因为您有其他纯虚拟函数来抽象类。