1. 问题解决 usr/include/c++/11/bits/list.tcc:344:24: error: no match for ‘operator==’
错误解释:
这个编译错误表明编译器在尝试使用==
操作符比较两个对象时找不到匹配的操作符函数。在C++中,如果你尝试比较两个自定义类型的对象,且没有为这些对象定义==
操作符,编译器将无法进行比较,从而导致这个错误。
解决方法:
1. 如果你在比较的对象是内置类型(如int、float等),确保没有错误地重载了==
操作符,如果有,移除自定义的操作符重载。
2. 如果你在自定义类型中使用了std::list
,并尝试比较其中的元素,确保你的自定义类型重载了==
操作符。你可以在你的类定义中添加如下函数
bool operator==(const YourClass& lhs, const YourClass& rhs) {
// 实现比较逻辑
}
2. 问题解决:bool operator== too many parameters for this operator function
这个错误信息表明你正在尝试为operator==
定义一个接收了错误数量的参数的函数。
operator==
是C++中的一个二元比较运算符,它需要两个参数来进行比较。通常情况下,这个运算符被重载为类的成员函数或者被重载为两个对象(或指向对象的指针)的非成员函数。
如果你在定义operator==
作为非成员函数,你需要提供两个参数。如果你在定义它作为成员函数,它通常只需要一个参数(另一个隐式的通过this
传递),再加上一个返回类型为bool
的值。
解决这个错误,你需要检查你的operator==
定义,确保它有正确数量的参数。
例如,如果你有一个Point
类,你可能会这样定义operator==
:
class Point {
public:
int x, y;
// 非成员函数版本
friend bool operator==(const Point& lhs, const Point& rhs) {
return lhs.x == rhs.x && lhs.y == rhs.y;
}
// 成员函数版本
bool operator==(const Point& other) const {
return x == other.x && y == other.y;
}
};
标签:11,const,函数,no,Point,344,操作符,operator,bool From: https://www.cnblogs.com/FBsharl/p/18124837