2011-10-15 120 views
0

我有我的老師告訴我們在.h文件中使用這個方法的任務:重載字符串()操作

operator string(); 

以任何方式,我們不能偏離它。

所以在我的.cpp文件我有:

Currency::operator string(){ 
stringstream output; 
output<<"$"; 
output<<dollars;//Why does this return garbage for money1+money2?? 
output<<"."; 
output<<cents; 
string outputstring = output.str(); 
return outputstring; 
    } 

但是當我做string(money1+money2)返回垃圾,它工作正常時,我只是做「字符串(MONEY1)`。我想知道我做錯了什麼。

任何幫助將是偉大的。

這裏是我的重載+操作員代碼:

Currency& Currency::operator+(const Currency &rhs){ 
Currency temp; 
temp.dollars = dollars + rhs.dollars; 
temp.cents = cents + rhs.cents; 
temp.simplify(); 
return temp; 
} 

注:我已運行調試,並有一個與重載+操作沒有問題;它返回它應該的。

+2

你的錯誤可能在於你的'運營商+',而不是在'運營商string'。 –

+2

您的問題可能出現在您*未顯示給我們的代碼中。請在這裏創建一個最小的**完整的**示例程序並複製粘貼。在這個過程中,你可能會發現自己的錯誤。請參閱http://sscce.org獲取更多信息。 –

+0

僅僅因爲'operator +'*出現*返回期望值並不意味着它*正確*。尤其是使用C++。 –

回答

7

這裏是我的重載+操作員代碼:

你通過引用返回一個局部變量。 千萬不要這樣做。

你應該通過值返回它:

Currency Currency::operator+(const Currency &rhs) 
+0

謝謝,我得到了我的教授的指示搞砸了。我以爲他擁有它,因爲我原來是這樣,但我錯了。我已經修復了它,並修復了這個錯誤。 –