我想知道为什么我不能在用户定义的类中使用 STL 映射。当我编译下面的代码时,我得到了以下神秘的错误消息。这是什么意思?另外,为什么只有用户定义类型才会发生这种情况?(如果使用基本类型作为键,则可以使用它们。)
C: MinGW bin. . lib gcc mingw323.4.5... ... include c + + 3.4.5 bit stl _ function. h | | In 成员函数‘ bool’ : less < _ Tp > : : Operator ()(const _ Tp & , Const _ Tp &) const [ with _ Tp = 类别1: |
C: MinGW bin. . lib gcc mingw323.4.5... ... include c + + 3.4.5 bit stl _ map. h | 338 | 实例化 来自‘ _ Tp & std: : map < _ Key,_ Tp, _ Compare,_ Alloc > : : Operator [](const _ Key &)[ with _ Key = Class1,_ Tp = int,_ Compare = std: : less,_ Alloc = std: : allocator > ]’|
C: Users Admin Document dev sandbox sandbox.cpp | 24 | instance 从这里开始
C: MinGW bin. . lib gcc ming w323.4.5... ... include c + + 3.4.5 bit stl _ function. h | 227 | error: no match for‘ operation <’in’_ _ x < _ _ y’| | | = = = 编译完成: 1个错误,0个警告 = = |
#include <iostream>
#include <map>
using namespace std;
class Class1
{
public:
Class1(int id);
private:
int id;
};
Class1::Class1(int id): id(id)
{}
int main()
{
Class1 c1(1);
map< Class1 , int> c2int;
c2int[c1] = 12;
return 0;
}