Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::map中的用户定义类:二进制表达式的操作数无效_C++_C++11 - Fatal编程技术网

C++ std::map中的用户定义类:二进制表达式的操作数无效

C++ std::map中的用户定义类:二进制表达式的操作数无效,c++,c++11,C++,C++11,我想使用一个类作为std::map中的键 std::map<Type, value> collection; 为什么会发生这种情况?您必须定义运算符您必须定义运算符您的成员函数必须是常量:内联布尔运算符

我想使用一个类作为std::map中的键

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 { /* ... */ }