Zugriff auf STL List Container



  • Hallo,

    irgendwie will der Zugriff auf dei Listengegenstände nicht richtig funktionieren. Es sieht folgendermassen aus:
    Im Header habe ich meine Liste so deklariert:

    list<ClRecord*> bestand;
    list<ClRecord*>::iterator records;
    

    Liste enthält Referenzen auf Klassen, die wiederum mehrere Strings enthalten. Jetzt möchte ich einen dieser strings gerne einem anderen zuweisen, wofür ich ihn aus der Liste auspacken muss. Das versuche ich so:

    verwaltung->records=verwaltung->bestand.begin(); 
    m_strRecnum=verwaltung->records->ShowRec();
    

    m_strRecnum ist ein leerer String, verwaltung eine Referenz auf die Instanz einer Klasse, welche die Liste enthält.ShowRec() eine Methode um den gewünschten String aus dem private Bereich der Klasse zu holen.
    Ich bekomme folgende Fehlermeldungen:
    *
    invalid return type for std::list for invalid operator ->
    und
    left of ->ShowRec must point to class/struct/union
    *
    Wie kann ich denn dann überhaupt auf meine "Listenbewohner" zugreifen, insbesondere das inner der in der Liste liegenden Objekte? Sollte ich irgendwas gravierend ändern?
    Danke für jede Hilfe!



  • list<ClRecord*>::iterator pos;
    pos = verwaltung->bestand.begin();
    
    verwaltung->records = *pos;
    

    Klappts so ?



  • verwaltung->records ist noch nicht das gespeicherte Element sondern eine Iterator, denn muß du noch dereferenzieren.

    So sollte es funktionieren:

    verwaltung->records=verwaltung->bestand.begin();  
    
    // Zugriff auf erstes Element der Liste:
    m_strRecnum=(*(verwaltung->records))->ShowRec();
    
    // Zugriff auf zweites Element der Liste:
    verwaltung->records++
    m_strRecnum=(*(verwaltung->records))->ShowRec();
    
    //u.s.w.
    


  • 🙂 Danke, klappt!


Anmelden zum Antworten