我有一个似乎非常微不足道的问题,但我似乎无法弄清楚原因是什么。
我有一个名为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'”。我试过谷歌搜索和调整的东西,但我似乎找不到任何有用的东西。如果有人可以指出我正确的方向来查看文章,那就太好了,因为我不确定要搜索哪个术语来得到正确的答案。
答案 0 :(得分:6)
您已声明该成员,但未已定义。
你需要,例如Storage.cpp位于最外层,即与方法定义处于同一级别:
Player Storage::player;
答案 1 :(得分:1)
仅仅声明一个静态类变量是不够的,它还需要定义它,例如在.cpp文件的顶部(但当然是在include
之后)
Player Storage::player;