我试图将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坐标相等。
==运算符仅需两个参数(不是三个参数(。
在类别中定义它时,一个参数为 this ,另一个参数是在类似的参数列表中定义的:
bool operator ==(const Point& b) const;
如果您现在想比较三个对象,则必须两次调用操作员:
(p1 == p2) && (p2 == p3)