我试着做一个简单的结构是这样的覆盖:对结构覆盖二进制运算符<<
struct Node {
int data1;
int data2;
ostream& operator<<(ostream &o, const Node &n)
{
o << "(a: " << data1 << ", b: " << data2 << ")";
return o;
}
};
即时得到:错误C2804:“运营商< <”太多参数
所以,如果我删除第二个参数:
ostream& operator<<(ostream &o)
然后我得到:错误:二进制“< <”:没有操作员发现这需要一个合适的娴类型d操作数“常量节点”
这到底是怎么来的?
或者声明它作为一个'friend'和访问'data1'和'data2'通过'N'。 – user657267
@ user657267我从来不喜欢那个招数太多:) – Anycorn
如果需要访问类的私有数据字段,那么你只会把它变成一个“好友”函数。否则,它不必要地违反封装。 @user –