Мне интересно, почему я не могу использовать карты STL с пользовательскими классами. Когда я компилирую код ниже, я получаю следующее загадочное сообщение об ошибке. Что это значит? Кроме того, почему это происходит только с пользовательскими типами? (Примитивные типы в порядке, когда они используются в качестве ключа.)
C:\MinGW\Bin..\Lib\НКУ\mingw32\3.4.5........\Include\c++\3.4.5\бит\stl_function.h || В функция-член 'bool std::less & lt; _Tp> :: operator() (const _Tp & amp;, const _Tp & amp;) const [с _Tp = Class1]: |
C:\MinGW\bin..\lib\gcc\mingw32\3.4.5........\include\c++\3.4.5\bits\stl_map.h|338|instantiated from '_Tp& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const _Key&) [with _Key = Class1, _Tp = int, _Compare = std::less, _Alloc = std::allocator >]'|
C:\Users\Admin\Documents\dev\sandbox\sandbox\sandbox.cpp|24|instantiated from here|
C:\MinGW\bin..\lib\gcc\mingw32\3.4.5........\include\c++\3.4.5\bits\stl_function.h|227|error: no match for 'operator<' in '__x < __y'| ||=== Build finished: 1 errors, 0 warnings ===|
#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;
}