为什么此代码会显示错误消息“IntelliSense:此操作符函数的参数太多”
int operator+(PerfectNum a,PerfectNum b)
{
return (a.thenum+b.thenum);
}
PerfectNum是一个常规类,而thenum是一个int。 这个方法在课堂上。
答案 0 :(得分:6)
您将此定义为成员函数,对吗?
在这种情况下,左侧只是*this
:
// .h
class PerfectNum
{
public:
int operator+(PerfectNum other) const;
};
// .cpp
int PerfectNum::operator+(const PerfectNum &other) const
{
return this->thenum + other.thenum;
}
答案 1 :(得分:4)
您需要让您的运营商成为非会员功能。
答案 2 :(得分:1)
运算符+应该是非成员函数。返回类型应该是const对象。如果你有operator = defined,那么最好还定义operator + =。因此,您可以根据operator + =。
实现operator +const PerfectNum operator+(const PerfectNum& lhs, const PerfectNum& rhs)
{
PerfectNum ret(lhs);
ret += rhs;
return rhs;
}
答案 3 :(得分:1)
当声明为类方法时,重载operator +当然不应该是friend / free函数。这是一个非常简单的实现:
class PerfectNum {
public:
PerfectNum(int);
PerfectNum(const PerfectNum&);
PerfectNum operator+(const PerfectNum&) const;
private:
int mNumber;
};
PerfectNum PerfectNum::operator+(const PerfectNum& rhs) const
{
return PerfectNum(this->mNumber + rhs.mNumber);
}