# Mit iterator eine Liste durchlaufen



## afg_style (20. März 2011)

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


```
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:


```
//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


----------



## Matthias Reitinger (20. März 2011)

Hallo,

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

```
(**iter).toString();
// oder
(*iter)->toString();
```

Grüße,
Matthias


----------



## afg_style (20. März 2011)

Danke Matthias, es hat geklappt!


----------

