Ich frage mich, warum ich STL-Maps nicht mit benutzerdefinierten Klassen verwenden kann. Wenn ich den folgenden Code kompiliere, wird die folgende kryptische Fehlermeldung angezeigt. Was heißt das? Warum passiert das nur bei benutzerdefinierten Typen? (Primitive Typen sind in Ordnung, wenn sie als Schlüssel verwendet werden.)
C: \ MinGW \ bin .. \ lib \ gcc \ mingw32 \ 3.4.5 ........ \ include \ c ++ \ 3.4.5 \ bits \ stl_function.h || In der Mitgliedsfunktion `bool std :: less <_Tp> :: operator () (const _Tp &, const _Tp &) const [mit _Tp = Class1] ': |
C: \ MinGW \ bin .. \ lib \ gcc \ mingw32 \ 3.4.5 ........ \ include \ c ++ \ 3.4.5 \ bits \ stl_map.h | 338 | instanziiert von `_Tp & std :: map <_Key, _Tp, _Compare, _Alloc> :: operator [] (const _Key &) [mit _Key = Class1, _Tp = int, _Compare = std :: less, _Alloc = std :: allocator>] '|
C: \ Benutzer \ Admin \ Dokumente \ dev \ sandbox \ sandbox \ sandbox.cpp | 24 | von hier aus instanziiert |
C: \ MinGW \ bin .. \ lib \ gcc \ mingw32 \ 3.4.5 ........ \ include \ c ++ \ 3.4.5 \ bits \ stl_function.h | 227 | Fehler: Keine Übereinstimmung für 'Operator <'in' __x <__y '| || === Build beendet: 1 Fehler, 0 Warnungen === |
#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;
}