未解决的外部

时间:2012-05-23 18:12:23

标签: c++ linker

我正在研究一个简单的自上而下的射手,并希望将我的船只移到一个单独的ShipManager类,在那里我可以从一个位置管理所有这些。但是,在启动时,我的playerShip上出现了一个链接器错误:

错误LNK2001:未解析的外部符号“public:static class Ship * ShipManager :: playerShip”

ShipManager.h如下所示:

class Ship;

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

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

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

2 个答案:

答案 0 :(得分:6)

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

Ship* ShipManager::playerShip;

答案 1 :(得分:4)

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

Ship* ShipManager::playerShip;

好读:
What is the difference between a definition and a declaration?