这是我第一次使用std :: set容器,运行符std :: less时出现问题。
我声明了集合:
std::set<MyClass*, std::less<MyClass> > _set;
然后,我为MyClass重载运算符&lt; ;这个问题似乎与class和pointer之间的混合有关,因为我有这个错误信息:
no match for call to '(std::less<MyClass>) (MyClass *const&, MyClass *const&)'
答案 0 :(得分:3)
您为operator<
重叠MyClass
,但您的设置指针为MyClass
。
简单的答案是不使用指针。如果您觉得必须使用指针,那么答案就是为您的集合编写自定义比较器。
struct Comp
{
bool operator()(MyClass* x, MyClass* y);
};
std::set<MyClass*, Comp> _set;
答案 1 :(得分:2)
您只想使用std::set<MyClass>
。比较器默认为std::less
。