2012-09-24 183 views
0

Possible Duplicate:
Access issue regarding static variable靜態變量訪問

我有什麼似乎是一個非常無聊的問題,但我似乎無法找出其中的原因。

我有一個叫做存儲的類。 頭文件:

#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() { 

} 

這給出了一個錯誤: 「未定義參考`存儲::球員'」。我嘗試過使用Google和調整東西,但我似乎無法找到任何有效的東西。如果有人能指引我看一篇文章的正確方向,那很好,因爲我不確定這個術語是爲了尋找正確答案而尋找的。

+3

的頂部取下'使用命名空間std。 –

+0

另外,您已經在使用'ostringstream'將您的資金從一個整數轉換爲一個字符串。您應該爲* entire *方法使用相同的stringstream。通過將其重寫爲'stringstream out',整個方法變得更短,更清晰和更高效。 out <<「Money:」<< money << std :: endl << player.GetShipInformation()<< player.GetCurrentLocation();返回out.str();' – meagar

回答

6

你有申報的成員,但不是定義的它。

您需要在例如Storage.cpp在最外層,即在相同的水平的方法的定義:

Player Storage::player; 
+0

謝謝你,我發現在別的地方,但是把它放在頭文件,而不是cpp,這有助於清理事情。 – user1694806

1

這是不夠的,只是聲明靜態類變量,它也需要定義它,例如從標題';在你的.cpp文件(但經過include的過程中建成,)

Player Storage::player;