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 回答