繁体   English   中英

操作符重载; 必须是二进制运算符(带有3个参数)

[英]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;
}

该版本表示,如果点p1p2的x,y和z坐标相等,则它们相等。

==运算符仅接受两个参数(而不是三个)。

在类中定义它时,一个参数是这个 ,另一个在参数列表中定义如下:

bool operator ==(const Point& b) const;

如果现在要比较三个对象,则必须两次调用运算符:

(p1 == p2) && (p2 == p3)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM