听从 given in this answer 的建议,我在我的简单 Point
类中重载了 +
运算符,如下所示(+= 重载工作正常)。
Point operator+ (Point p1, const Point& p2)
{
return std::move(p1 += p2);
}
但我收到一个错误提示
overloaded 'operator+' must be a unary or binary operator (has 3 parameters)
怎么了?
最佳答案
听起来您已将运算符声明为成员函数。成员函数采用隐式第一个参数,这意味着您的运算符现在采用三个参数。您可以通过将其设为非成员函数来解决此问题。
在任何情况下,最好将其声明为非成员,以确保操作的 LHS 和 RHS 之间的对称性。
至于 std::move
, 它在 <utility>
标题。虽然我看不到在这里使用它的原因。
关于c++ - 重载 'operator+' 必须是一元或二元运算符错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13554320/