ユーザー定義のクラスで STL マップを使用できない理由が不思議です。以下のコードをコンパイルすると、次の不可解なエラー メッセージが表示されます。どういう意味ですか?また、ユーザー定義型でのみ発生するのはなぜですか? (プリミティブ型は、キーとして使用する場合は問題ありません。)
C:\MinGW\bin..\lib\gcc\mingw32\3.4.5........\include\c++\3.4.5\bits\stl_function.h||メンバー関数内 `bool std:: less<_Tp>::operator()(const _Tp&, const _Tp&) const [ with _Tp = Class1]':|
C:\MinGW\bin..\lib\gcc\mingw32\3.4.5........\include\c++\3.4.5\bits\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\Documents\dev\sandbox\sandbox\sandbox.cpp|24|ここからインスタンス化|
C:\MinGW\bin..\lib\gcc\mingw32\3.4.5........\include\c++\3.4.5\bits\stl_function.h|227|エラー: 'operator に一致しません<' 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;
}