0

重複の可能性:
静的変数に関するアクセスの問題

本当に些細な問題のようですが、原因がわかりません。

私はストレージと呼ばれるクラスを持っています。ヘッダー ファイル:

#include <string>
using namespace std;
#include "Player.h"

class Storage {
public:
    static void Initialise();
    static string GetInformation();     
private:
    static Player player;
};

CPP ファイル:

string Storage::GetInformation() {
    string returnString = "";
    // Get the players money
    // Convert it to a string
    string money("money");
    stringstream out;
    out << player.GetMoney();
    money = out.str();
    returnString += "Money: " + money + "\n";

    // Get the players ship information
    returnString += player.GetShipInformation();

    // Get the players current location
    returnString += player.GetCurrentLocation();

    return returnString;
}

void Storage::Initialise() {

}

これにより、「`Storage::player' への未定義の参照」というエラーが発生します。グーグルで調べたり、微調整したりしてみましたが、機能するものが見つからないようです。正しい答えを得るためにどの用語を検索すればよいかわからないので、誰かが記事の正しい方向性を教えてくれるとしたら、それは素晴らしいことです。

4

2 に答える 2

6

メンバーを宣言しましたが、定義していません。

たとえば、最も外側のレベル、つまりメソッド定義と同じレベルの Storage.cpp が必要です。

Player Storage::player;
于 2012-09-24T15:10:33.493 に答える
1

静的クラス変数を宣言するだけでは十分ではなく、.cpp ファイルの先頭などで定義する必要があります (ただしinclude、もちろん s の後)。

Player Storage::player;
于 2012-09-24T15:12:28.540 に答える