Iterator und std::list

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
jgl
Establishment
Beiträge: 109
Registriert: 08.04.2009, 08:58

Iterator und std::list

Beitrag von jgl »

Hallo,

ich komme gerade nicht ganz weiter.... weis auch nicht was da los ist.
Ich habe eine Klasse:

Code: Alles auswählen

class Blaa
{
private:
  std::vector<std::list<MeineKlasse>*> mMeineKlassen;
...
public:
  std::vector<std::list<MeineKlasse>*> * getMeineKlassen()
{
  return &mMeineKlassen;
}
}
in einer anderen Klasse habe ich einen Zeiger auf das Objekt der Klasse "Blaa".
Mein Ziel ist es, mit einem Iterator über die Listen in dem std::vector zu gehen.

Code: Alles auswählen

AndereKlasse::AndereKlasse(...)
{
 for(unsigned int index(0); index<mBlaa->getMeineKlassen->size(); ++index)
 {
    std::list<MeineKlasse>::iterator iter(mBlaa->getMeineKlassen->at(index));  //Compile-Error
 }
}
Der Compiler meckert da, und sagt:
Fehler 5 error C2664: 'std::list<_Ty>::_Iterator<_Secure_validation>::_Iterator(const std::list<_Ty>::_Iterator<_Secure_validation> &)': Konvertierung des Parameters 1 von 'std::list<_Ty> *' in 'const std::list<_Ty>::_Iterator<_Secure_validation> &' nicht möglich
auch eine Dereferenzierung bringt nichts:

Code: Alles auswählen

std::list<MeineKlasse>::iterator iter(*mBlaa->getMeineKlassen->at(index));
Was muss ich da tun, damit es funktioniert?

MfG
Benutzeravatar
jgl
Establishment
Beiträge: 109
Registriert: 08.04.2009, 08:58

Re: Iterator und std::list

Beitrag von jgl »

Ach Herr Gott!!!
Da ist mir ein Fehler unterlaufen:

Code: Alles auswählen

 std::list<MeineKlasse>::iterator iter(mBlaa->getMeineKlassen->at(index)); 
sollte zu

Code: Alles auswählen

 std::list<MeineKlasse>::iterator iter(mBlaa->getMeineKlassen->at(index)->begin()); 
werden. Nun funktioniert es :).

Danke trotzdem!!
Benutzeravatar
Biolunar
Establishment
Beiträge: 154
Registriert: 27.06.2005, 17:42
Alter Benutzername: dLoB

Re: Iterator und std::list

Beitrag von Biolunar »

std::vector::at() liefert dir ein std::list<MeineKlasse>* zurück und keinen Iterator. Du musst mit

Code: Alles auswählen

std::list<MeineKlasse>::iterator iter = mBlaa->getMeineKlassen()->at(index)->begin();
noch den Anfangsiterator holen.

edit: damn, zu langsam :)
Antworten