gpt4 book ai didi

c++ - 在使用 std::set 时重载运算符 <

转载 作者:太空狗 更新时间:2023-10-29 20:42:07 32 4
gpt4 key购买 nike

这是我第一次使用 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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com