这是我第一次使用 std::set 容器,并且我对操作符 std::less 遇到了问题。
我声明该集合:
std::set<MyClass*, std::less<MyClass> > _set;
然后,我超载了运算符对于我的班级;问题似乎与类和指针之间的混合有关,因为我有以下错误消息:
no match for call to '(std::less<MyClass>) (MyClass *const&, MyClass *const&)'
你超载了operator<
for MyClass
,但是你的集合有pointers to MyClass
.
简单的答案是不使用指针。如果您觉得必须使用指针,那么答案是为您的集合编写一个自定义比较器。
struct Comp
{
bool operator()(MyClass* x, MyClass* y);
};
std::set<MyClass*, Comp> _set;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)