0
我想學習C++重寫操作符。但我堅持這一點:如何在C++中重寫++運算符,然後使用覆蓋<<運算符打印輸出?
..\src\application.cpp: In function `int main()':
..\src\application.cpp:29: error: no match for 'operator<<' in 'std::operator<< [with _Traits = std::char_traits](((std::basic_ostream >&)(&std::cout)), ((const char*)"Poly A: ")) << (&A)->Poly::operator++(0)'
下面是導致錯誤的路線,看來,我的後置操作不返回任何東西打印:我有一個Poly.h和
cout << "Poly A: " << A++ << endl;
Poly.cpp文件:
class Poly{
friend istream& operator>>(istream &in, Poly &robject);
friend ostream& operator<<(ostream &out, Poly &robject);
public:
Poly();
Poly operator++(int);
Poly operator++();
private:
int data[2];
};
Poly.cpp:
Poly Poly::operator++(){
data[0]+=1;
data[1]+=1;
return *this;}
Poly Poly::operator++ (int){
Poly result(data[0], data[1]);
++(*this);
return result;
}
ostream& operator<<(ostream &out, Poly &robject){
out << "(" << robject.data[0] << ", " << robject.data[1] << ")";
return out;
}
哦,這就是const所做的。它工作感謝。 – 2009-12-13 01:28:49
是的,這是正確的。您需要在運算符<<()函數中使用Poly的副本或const引用(首選)。 – Andrey 2009-12-13 01:29:13
等等。如果你想綁定到一個臨時的並修改它,這將會是一個問題,但在這種情況下這不是問題。 – CAdaker 2009-12-13 01:30:57