C++ std::map中的用户定义类:二进制表达式的操作数无效
我想使用一个类作为std::map中的键C++ std::map中的用户定义类:二进制表达式的操作数无效,c++,c++11,C++,C++11,我想使用一个类作为std::map中的键 std::map<Type, value> collection; 为什么会发生这种情况?您必须定义运算符您必须定义运算符您的成员函数必须是常量:内联布尔运算符
std::map<Type, value> collection;
为什么会发生这种情况?您必须定义
运算符您必须定义运算符您的成员函数必须是常量
:内联布尔运算符<(常量类型和rhs)常量
更好的是,将其作为非成员友元
函数来实现对称性。您的成员函数需要是常量
:内联布尔运算符<(const Type&rhs)常量代码>更好的是,将其作为非成员朋友函数来实现对称性。这是一个多么愚蠢的错误啊。谢谢忽视这是多么愚蠢的错误啊。谢谢
class Type {
public:
inline bool operator< (const Type& rhs) { /* ... */ }
inline bool operator< (const Type& rhs) const { /* ... */ }