首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运算符重载;必须是二元运算符(具有3个参数)

运算符重载;必须是二元运算符(具有3个参数)
EN

Stack Overflow用户
提问于 2019-08-03 20:12:32
回答 2查看 204关注 0票数 1

我正在尝试将2D自我避免随机游走改为3D。但我得到的错误是'operator overloading‘。有人能帮我解决这个问题吗?我的代码附在下面。

代码语言:javascript
复制
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));
}
EN

回答 2

Stack Overflow用户

发布于 2019-08-03 20:19:32

你不能用三个参数来定义operator==。想一想你每隔一次使用==,它总是有两个参数。

看起来你想要的东西是这样的

代码语言:javascript
复制
bool operator==(Point p1, Point p2) {
    return p1.x == p2.x && p1.y == p2.y && p1.z == p2.z;
}

这个版本说,如果点p1p2的x,y和z坐标相等,那么它们是相等的。

票数 1
EN

Stack Overflow用户

发布于 2019-08-03 20:27:31

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

当在类中定义它时,一个参数是this,另一个是在参数列表中定义的,如下所示:

代码语言:javascript
复制
bool operator ==(const Point& b) const;

如果你现在想要比较三个对象,你必须调用操作符两次:

代码语言:javascript
复制
(p1 == p2) && (p2 == p3)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57338202

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档