相关疑难解决方法(0)

'friend'函数和<<运算符重载:为类重载运算符的正确方法是什么?

在我正在进行的项目中,我有一个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 …

c++ class operator-overloading friend friend-class

22
推荐指数
3
解决办法
6万
查看次数

标签 统计

c++ ×1

class ×1

friend ×1

friend-class ×1

operator-overloading ×1