2014-02-24 17 views
0

我試圖使用ostringstream類,但是當我打電話的getter方法,我得到一個錯誤說:錯誤:getQuantity沒有在這個範圍內聲明OutofScope getters C++?

這是我在我的.h文件

public: 
const std::string & getName() const; 
int getQuantity(); 
std::string listInfo(); 

private: 
std::string name; 
int quantity; 

這是我在我的.cpp文件

ostringstream outputString; 
const string & Product::getName() const 
{ 
return name; 
} 
int Product::getQuantity() 
{ 
return quantity; 
} 
string listInfo() 
{ 

outputString << getName() << getQuantity(); 
return outputString.str(); 
} 

我不明白它是如何出來的範圍,如果它在同一個文件?謝謝!

回答

5

你的意思是寫的

string Product::listInfo() 

代替

string listInfo() 

後者宣稱其在命名空間內沒有getQuantity()知識自由函數(因爲getQuantity是一個成員函數)。

範圍有一點做與文件,你所在的下列變量在同一行範圍不同:

{int x;}{int x;} 
+0

謝謝!這樣一個簡單的錯誤 – user3348712

0

string listInfo() 
{ 

outputString << getName() << getQuantity(); 
return outputString.str(); 
} 

是非的定義一個類的成員函數。您忘記在函數名稱前面指定類名稱。

應該有

string Product::listInfo() 
{ 

outputString << getName() << getQuantity(); 
return outputString.str(); 
} 

而且它是您定義outputString爲所使用成員函數列表信息

ostringstream outputString; 

這將是更好的,它是一個globale變量是一個壞主意可以是類的靜態數據成員,也可以是函數的局部變量。這個函數也可以用限定符const聲明。例如

string Product::listInfo() const 
{ 
ostringstream outputString; 
outputString << getName() << getQuantity(); 
return outputString.str(); 
} 
+0

哇謝謝你!好多了 – user3348712