3

我试图重载运算符<<

const ostream & operator<<(const ostream& out, const animal& rhs){
    out << rhs.a;
    return out;
}

似乎我得到了一个错误,因为我返回一个 const 并且因为第一个参数是对 ostream 对象的 const 引用。

cout << objectOfAnimal1 << objectOfAnimal2 ;

如果我将返回类型和运算符签名更改为这个,它就可以正常工作:

ostream & operator<<(ostream& out, const animal& rhs)
4

2 回答 2

4

你需要有:

ostream & operator<<(ostream& out, const animal& rhs)

在您的代码中您正在尝试修改一个const ostream对象,因此您会收到错误消息。
不应该const

于 2012-05-03T15:45:59.940 回答
1
ostream & operator<<(ostream& out, const animal& rhs){
out << rhs.a;
return out;
}

您已经解释了问题的可能原因,您真的没有尝试过吗?

于 2012-05-03T15:45:35.790 回答