操作员超载;必须是二进制操作员(具有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;
}
该版本说 p1
和 p2
的x,y和z坐标相等。
==运算符仅需两个参数(不是三个参数(。
在类别中定义它时,一个参数为 this ,另一个参数是在类似的参数列表中定义的:
bool operator ==(const Point& b) const;
如果您现在想比较三个对象,则必须两次调用操作员:
(p1 == p2) && (p2 == p3)
相关文章:
- 具有瞬态资源的RAII类
- 具有默认模板参数的多态类的模板推导失败
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- std::具有相同基类的类的变体
- 命名空间中具有.h和.cpp文件的类
- 具有奇怪重复模板模式的派生类中的成员变量已损坏
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 操作员超载;必须是二进制操作员(具有3个参数)
- 基本操作员具有非指针类型
- C 三元操作员具有范围分辨率和条件
- C 的后缀操作员优先级,并具有
- C 操作员在具有构造函数转换时过载
- C 删除具有内存位置的操作员
- ostream << 具有模板类的操作员,无法访问私有成员
- 高效的操作员<具有多个成员
- 对具有重载操作员>的类型进行就地销毁
- 设计具有操作员'<<'的C++记录仪