在我正在进行的项目中,我有一个Score类,定义如下score.h.我试图超载它,因此,当对其<<执行操作时,_points + " " + _name打印.
这是我试图做的事情:
ostream & Score::operator<< (ostream & os, Score right)
{
os << right.getPoints() << " " << right.scoreGetName();
return os;
}
Run Code Online (Sandbox Code Playgroud)
以下是返回的错误:
score.h(30) : error C2804: binary 'operator <<' has too many parameters
Run Code Online (Sandbox Code Playgroud)
(此错误实际出现4次)
我设法通过将重载声明为友元函数来使其工作:
friend ostream & operator<< (ostream & os, Score right);
Run Code Online (Sandbox Code Playgroud)
并Score::从score.cpp中删除函数声明(实际上没有将其声明为成员).
为什么这样做,但前一段代码没有?
谢谢你的时间!
编辑
我删除了头文件上的重载的所有提及...但我得到以下(和唯一)错误.binary '<<' : no operator found which takes a right-hand operand of type 'Score' (or …