静态变量访问

时间:2012-09-24 15:08:44

标签: c++

  

可能重复:
  Access issue regarding static variable

我有一个似乎非常微不足道的问题,但我似乎无法弄清楚原因是什么。

我有一个名为storage的类。 头文件:

#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'”。我试过谷歌搜索和调整的东西,但我似乎找不到任何有用的东西。如果有人可以指出我正确的方向来查看文章,那就太好了,因为我不确定要搜索哪个术语来得到正确的答案。

2 个答案:

答案 0 :(得分:6)

您已声明该成员,但未已定义

你需要,例如Storage.cpp位于最外层,即与方法定义处于同一级别:

Player Storage::player;

答案 1 :(得分:1)

仅仅声明一个静态类变量是不够的,它还需要定义它,例如在.cpp文件的顶部(但当然是在include之后)

Player Storage::player;