2

私は単純なトップダウン シューティング ゲームに取り組んでおり、自分の船を別の ShipManager クラスに移動して、すべての船を 1 つの場所から管理できるようにしたいと考えていました。ただし、これを開始すると、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」を含めたので、正しく検出されるはずですか? このクラスで簡単なことを忘れているような気がします。

4

2 に答える 2

6

静的メンバーはどこかに定義する必要があります。を宣言していますがplayerShip、定義していません。cpp ファイルを 1 つだけ追加する必要があります。

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

静的メンバーを宣言しただけで、cpp ファイルの 1 つ (のみ) で定義する必要もあります。

Ship* ShipManager::playerShip;

よく読んでください:
定義と宣言の違いは何ですか?

于 2012-05-23T18:13:35.367 に答える