Problem mit map aus STL
-
Hallo zusammen,
Ich möchte gern eine map nutzen. Als key ein int und als value eine selbst rstellte abstracte klasse mit 2 unterklassen:
map <int, Konto> konten;
Doch wenn ich nun ein neuen eintrag in der map anlegen möchte:
...
konten[knummer]=k;bekomme ich folgende Fehlermeldung bei Bloodshed dev c++:
no match for 'operator=' in '(((std::map<int, Bank::Konto, std::less<int>, std::allocator<std::pair<const int, Bank::Konto> > >)((Bank::MyBank)this)) + 4u)->std::map<_Key, _Tp, _Compare, _Alloc>::operator[] [with _Key = int, _Tp = Bank::Konto, _Compare = std::less<int>, _Alloc = std::allocator<std::pair<const int, Bank::Konto> >](((const int&)((const int*)(&knummer)))) = k'
Drüber hinaus würde ich gern wissen wie ich funktionen von den in map gespeicherten objekten aufrufen kann. Würde das so gehn?:
konten[knummer]->funktion();
Danke euch
-
Hast du auch den Zuweisungsoperator für die Klasse Konto überladen?
Test mal das hier:Konto test;
test = k;
-
HansH schrieb:
Drüber hinaus würde ich gern wissen wie ich funktionen von den in map gespeicherten objekten aufrufen kann. Würde das so gehn?:
konten[knummer]->funktion();
Bei map<int, Konto> wohl eher nicht. Da muss es konten[knummer].funktion() lauten.
-
... weil der []-Operator eine (wenn gefordert konstante) Referenz auf das Element des pair-Objekts zurückgibt.