我想使用一个类作为 std::map 中的键。
std::map<Type, value> collection;
虽然我定义了operator<
, key 不被接受:Invalid operands to binary expression ('const Type' and 'const Type')
.
class Type {
public:
inline bool operator< (const Type& rhs) { /* ... */ }
为什么会这样?
最佳答案
您必须定义您的 operator<
作为
inline bool operator< (const Type& rhs) const { /* ... */ }
因为 map 存储 const key
内部。
为了扩展一点,我还建议(就像评论中的 dyp 一样)尽可能使用非成员运算符重载。他们有各种各样的优势。我不会在这里列出它们,因为已经有关于优势/差异的很好的信息,让我将您链接到 Operator overloading : member function vs. non-member function? .
关于c++ - std::map 中的用户定义类:二进制表达式的无效操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23438363/