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.


Anmelden zum Antworten