这是我第一次使用 std::set 容器,我对运算符 std::less 有疑问。
我声明集合:
std::set<MyClass*, std::less<MyClass> > _set;
然后,我为 MyClass 重载了运算符<;问题似乎与类和指针的混合有关,因为我有这个错误消息:
no match for call to '(std::less<MyClass>) (MyClass *const&, MyClass *const&)'
最佳答案
你重载了 operator<
对于 MyClass
, 但你的集合有指向 MyClass
的指针 .
简单的答案是不使用指针。如果您觉得必须使用指针,那么答案就是为您的集合编写自定义比较器。
struct Comp
{
bool operator()(MyClass* x, MyClass* y);
};
std::set<MyClass*, Comp> _set;
关于c++ - 在使用 std::set 时重载运算符 <,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19905449/