我正在尝试将2D自我避免随机游走改为3D。但我得到的错误是'operator overloading‘。有人能帮我解决这个问题吗?我的代码附在下面。
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));
}发布于 2019-08-03 20:19:32
你不能用三个参数来定义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坐标相等,那么它们是相等的。
发布于 2019-08-03 20:27:31
==运算符只接受两个参数(而不是三个)。
当在类中定义它时,一个参数是this,另一个是在参数列表中定义的,如下所示:
bool operator ==(const Point& b) const;如果你现在想要比较三个对象,你必须调用操作符两次:
(p1 == p2) && (p2 == p3)https://stackoverflow.com/questions/57338202
复制相似问题