2

我正在开发一个简单的自上而下的射击游戏,并希望将我的船移动到一个单独的 ShipManager 类,在那里我可以从一个位置管理所有它们。但是,在开始此操作时,我的 playerShip 上出现链接器错误:

错误 LNK2001:未解析的外部符号“公共:静态类 Ship * ShipManager::playerShip”

ShipManager.h 看起来像这样:

class Ship;

class ShipManager
{
public:
static Ship*    playerShip;
};

我在 ShipManager .cpp 中还没有任何内容。我错过了什么?我使用此代码的唯一其他地方是在我实际调用 ShipManager::playerShip 的游戏类中,并且在那里我没有收到任何错误。

我在我的 game.cpp 中包含“ShipManager.h”,所以它应该找到它吗?我有一种感觉,我在这门课上忘记了一些简单的事情。

4

2 回答 2

6

静态成员必须在某处定义。您正在声明playerShip,但没有定义它。您需要在某处添加,必须且只有一个 cpp 文件

Ship* ShipManager::playerShip;
于 2012-05-23T18:13:14.657 回答
4

您只声明了静态成员,还需要在(仅)一个 cpp 文件中定义它:

Ship* ShipManager::playerShip;

好读:
定义和声明有什么区别?

于 2012-05-23T18:13:35.367 回答