我正在C++的大整數實現中工作,我試圖用我的BigInt類使用cout。我已經超載了< <運營商,但在某些情況下它不起作用。ostream的問題
這裏是我的代碼:
inline std::ostream& operator << (ostream &stream, BigInt &B){
if (!B.getSign()){
stream << '-';
}
stream << B.getNumber();
return stream;
}
上面的代碼作品有:
c = a + b;
cout << c << endl;
但失敗:
cout << a + b << endl;
在程序運行正常第一種情況,但在第二個編譯器給出了一個錯誤:
main.cc: error: cannot bind ‘std::ostream {aka std::basic_ostream<char>}’ lvalue to ‘std::basic_ostream<char>&&’
在兩種情況下,都可能過載運算符的功能嗎?
方法:
string getNumber();
bool getSign();
string BigInt::getNumber(){
return this->number;
}
bool BigInt::getSign(){
return this->sign;
}
這個錯誤似乎有點偏離,但是你不能將一個臨時的BigInt綁定到一個非const引用。把它作爲一個const引用;你不需要修改它。 – chris