3

这是我第一次使用 std::set 容器,我遇到了操作符 std::less 的问题。

我声明集合:

std::set<MyClass*, std::less<MyClass> > _set;

然后,我为 MyClass 重载了operator<;问题似乎与类和指针之间的混合有关,因为我有这个错误消息:

no match for call to '(std::less<MyClass>) (MyClass *const&, MyClass *const&)'
4

2 回答 2

4

您重载operator<了 for ,但您的MyClassset 有指向.MyClass

简单的答案是不使用指针。如果您觉得必须使用指针,那么答案是为您的集合编写一个自定义比较器。

struct Comp
{
    bool operator()(MyClass* x, MyClass* y);
};

std::set<MyClass*, Comp> _set;
于 2013-11-11T11:48:48.910 回答
2

您只想使用std::set<MyClass>. 比较器默认为std::less.

于 2013-11-11T11:46:30.973 回答