ERLEDIGT
NEIN
NEIN
ANTWORTEN
5
5
ZUGRIFFE
596
596
EMPFEHLEN
-
Hallo,
wie definiere ich den operator[], wenn ich eine map aus eigenen Datentypen habe?
Irgendwie steht ich grad etwas auf'm Schlauch?PHP-Code:struct Key
{
Key(int key) : i(key){};
inline bool operator<(const Key& other) const {return i< other.i;}
int i;
//...
};
struct Value
{
Value(int value) : i(value){};
int i;
//...
};
typedef map<Key, Value> ComplexMap;
void test()
{
ComplexMap cm;
cm.insert(make_pair(Key(1),Value(2))); // so geht's
Key k(2);
Value v(4711);
cm[k]=v; // so geht's nicht. Wie definiere ich den Klammer-Operator?
}
Kann mir jemand helfen?
Gruß,
Peter
-
08.05.09 11:41 #2
- Registriert seit
- Jun 2005
- Beiträge
- 7.983
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Danke, da hast du natürlich recht!
Die Fehlermeldung lautet:
error C2676: binary '[' : 'myClass' does not define this operator or a conversion to a type acceptable to the predefined operator
und myClass ist eine recht komplexe Klasse. Ich dachte es mit diesem einfachen Beispiel nachstellen zu können
Zudem ist mir noch ein Unterschied aufgefallen:
meine map hat als Schlüssel keine Objekte sondern Pointer auf Objekte.
Mit meinem einfachen Bsp funktioniert es aber dennoch mit dem default-Ctor
Was will mit also die obige Fehlermeldung sagen? Ich versteh's nichtPHP-Code:struct ValueInternals
{
int i;
int j;
};
struct Key
{
Key(int key) : i(key){};
inline bool operator<(const Key& other) const {return i< other.i;}
int i;
};
struct Value
{
Value(){};
Value(int value) : i(value){};
int i;
ValueInternals j;
//...
};
typedef map<Key*, Value> ComplexMap;
void test()
{
ComplexMap cm;
cm.insert(make_pair(&Key(1),Value(2))); // so geht's
Key k(2);
Value v(4711);
cm[&k]=v; // so geht's nicht. Wie definiere ich den Klammer-Operator?
}
-
08.05.09 12:18 #4
Moin,
wenn ich das richtig sehe, hast Du die MAP mit zwei Structs definiert
Du versucht dann aber, sie mit einzelnen Werten zu benutzentypedef map<Key*, Value> ComplexMap;
Du musst dann an beiden Stellen auch schon structs verwenden !Key k(2);
Value v(4711);
cm[&k]=v;
EDIT: Sorry, da war ich zu schnell - das ist hier Blödsinn - vergiss es
Aber Deine Structs sehen sehr seltsam aus, oder ?
Gruß
KlausGeändert von vfl_freak (08.05.09 um 12:24 Uhr) Grund: EDIT
Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
08.05.09 12:46 #5
- Registriert seit
- Jun 2005
- Beiträge
- 7.983
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
08.05.09 12:49 #6
Aber folgendes mache ich an vielen Stellen und es fuktioniert wunderbar:
Code :1 2 3 4 5 6 7 8 9 10 11 12
struct MY_STRUCT { long KeyValue; char cValue[10]; ... }; map<long,MY_STRUCT> mTempMap; ... // Füllen von MY_STRUCT ... mTempMap[MY_STRUCT.KeyValue] = MY_STRUCT;
Gruß
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
Ähnliche Themen
-
Frage zum &-Operator
Von Cyraid im Forum C/C++Antworten: 7Letzter Beitrag: 15.06.10, 23:09 -
VB 08 / Operator Mid
Von Xebino im Forum Visual Basic 6.0Antworten: 1Letzter Beitrag: 14.10.09, 09:23 -
TI89 - operator definieren
Von cycovery im Forum Sonstige SprachenAntworten: 0Letzter Beitrag: 10.11.08, 10:34 -
Like Operator
Von Arijane im Forum .NET Windows FormsAntworten: 4Letzter Beitrag: 22.06.08, 10:16 -
[c++] << und >> Operator
Von FireFlow im Forum C/C++Antworten: 2Letzter Beitrag: 26.12.04, 11:44





Zitieren

Login





