Mit iterator eine Liste durchlaufen

afg_style

Mitglied
Hallo Leute,

ich habe versucht eine Liste mit einem iterator zu durchlaufen und wollte dabei eine Methode der Klasse, mit dem ich die Liste deklariert habe, aufrufen, aber leider geht das irgendwie nicht:

Folgendes Beispiel:
Hier sind nur mal die Header-Dateien

C++:
class A
{
      private:
      std::string color;
    
      public:
      std::string toString();
};

class B
{
     private:
     std::list<A *> colors;

    std::string toString();
};

und nun die *.cpp Dateien:

C++:
//class A
//Konstruktoren.....
string A::toString()
{
    return color;
}

//class B
//Konstruktoren....

string B::toString()
{
    string text = "";
    list<A *>::iterator iter;
    for(iter=colors.begin(); iter!=colors.end(); iter++)
    {
        text += (*iter).toString();
    }

    return text;
}


text += (*iter).toString();..................... hiert tritt der Fehler auf, dass es die Methode tostring() gar nicht gibt!

Bitte um Hilfe
Danke
 
Hallo,

(*iter) ist vom Typ A*, du musst also zum Aufruf der Methode entweder zweimal dereferenzieren oder -> verwenden:
C++:
(**iter).toString();
// oder
(*iter)->toString();

Grüße,
Matthias
 
Zurück