如何覆盖 ++ C++ 中的运算符然后使用覆盖 << 打印输出操作员?
我正在尝试学习 C++ 中的重写运算符。但我坚持这个:
..\src\application.cpp: 在函数 `int main()' 中:
..\src\application.cpp:29: 错误:与“operator<<”不匹配在 'std::operator<< 中[with _Traits = std::char_traits](((std::basic_ostream >&)(&std::cout)), ((const char*)"Poly A: ")) << (&A)->Poly::operator++(0)'
这是导致错误的行,看来我的后增量运算符没有返回任何可打印的内容:
cout << "Poly A: " << A++ << endl;
我有一个 Poly.h 和一个 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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我认为问题在于您将参数声明为引用:
该引用不会绑定到您从
operator++
返回的临时变量。如果将
Poly
参数设置为const
引用,您应该能够输出它。I think the problem is that you declare your parameters as references:
The reference will not bind to the temporaries that you return from your
operator++
.If you make the
Poly
parameter aconst
reference you should be able to output it.