我一直試圖超載>>
操作符。我有兩個私有變量的類:no operator >>與這些操作數匹配
Class Complex
{
private:
double real;
double imaginary;
};
另外我有重載友元函數的>>
操作:
friend istream & operator>>(istream &is, Complex &c)
在功能的實現我試過很多方法寫入對象c
的變量,但我不斷收到錯誤no operator >> matches these operands
我環顧四周,看到我需要寫入變量的reference
,所以我嘗試了以下ng:
istream & operator>>(istream &is, Complex &c)
{
using std::cout;
double &r = c.real;
cout << "real: " <<is>> r;
return is;
}
但是,這仍然給我同樣的錯誤。 我有點困惑,因爲我試過is >> c.real
並沒有工作。
在類似的SO問題的答案之一,有人建議寫入到一個局部變量,將對象變量設置它,像:
double d;
cin >> d;
setReal(d);
我試圖找到一個更簡單的方法實現這一點而不是使用方法或將變量設置爲本地變量。
該解決方案可能是一個簡單的解決方案,但我真的只是一個C++的初學者,所以請把它放在我身上:P。
測試用例:
using std::cin;
Complex c;
cin >> c;
精確錯誤消息:
Error 1 error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::basic_ostream<_Elem,_Traits>' (or there is no acceptable conversion)
你能構建一個[最小測試用例](http://sscce.org)嗎?目前,還不清楚錯誤消息的具體內容。 – 2013-02-09 20:19:07
我真的不熟悉SSCCE。你的意思是你要我展示一些東西:Complex c; cout <<「輸入一個複數\ n」; cin >> c; – 2013-02-09 20:24:58
你知道C++標準庫已經有[複數](http://en.cppreference.com/w/cpp/numeric/complex)嗎? – 2013-02-09 20:25:28