自定义struct Point,使用remove删除Point和std::pair<Point,Point>
std::list<std::pair<Point, Point>>side;
std::list<Point>point;
//……
side.remove(std::make_pair(dp1, dp2));
point.remove(dp1);
vs的提示是
错误11error C2678: 二进制“==”: 没有找到接受“const datastructure::Point”类型的左操作数的运算符(或没有可接受的转换)
错误12error C2088: “==”: 对于 struct 非法
但是我本身已经对datastructure::Point重载了
bool operator==(const Point& rv)
{
//内容自己想,仅供参考
}
经过查找,得知remove需要==判断重载为const,const,也就是左右操作数都是const输入,此时运算符重载可以接受const和非const类型
而我已经对Point类进行了类内运算符重载,不想改为输入两个const形参的重载
解决方法是
bool operator==(const Point& rv)const
{
//内容自己想,仅供参考
}
输入引用传参前的const表明不会修改参数,第二个const表明不会更改this指针指向的对象的属性