[英]operator overloading ; must be a binary operator(with 3 parameters)
我正在尝试将2D自我避免随机行走更改为3D。 但是我收到错误“操作员超载”。 有人可以帮我解决问题吗? 我的代码附在下面。
struct Point
{
int x;
int y;
int z;
};
struct Data
{
int nSteps;
int maxX;
int maxY;
int maxZ;
int maxRSq;
int endX;
int endY;
int endZ;
};
bool operator == (Point p1, Point p2, Point p3){ **// Operator overloading(must //have binary operator(with 3 parameters))**
return ((p1.x == p2.x) && (p1.y == p2.y) or (p1.z == p2.z));
}
您不能使用三个参数定义operator==
。 想想您曾经使用==
其他时间,它总是有两个参数。
似乎您想要的是这样的东西
bool operator==(Point p1, Point p2) {
return p1.x == p2.x && p1.y == p2.y && p1.z == p2.z;
}
该版本表示,如果点p1
和p2
的x,y和z坐标相等,则它们相等。
==运算符仅接受两个参数(而不是三个)。
在类中定义它时,一个参数是这个 ,另一个在参数列表中定义如下:
bool operator ==(const Point& b) const;
如果现在要比较三个对象,则必须两次调用运算符:
(p1 == p2) && (p2 == p3)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.