std::list<CObject *>::iterator
-
std::list<CObject*> Objects; std::list<CObject*>::iterator it;
for(this->it=this->Objects.begin();this->it!=this->Objects.end();++this->it) { this->it->Get_Position(); }
/home/ugoessner-mint/Dokumente/C++/SFML_Spiel/src/Game.cpp|13|error: request for member ‘Get_Position’ in ‘*((CGame*)this)->CGame::it.std::_List_iterator<_Tp>::operator-><CObject*>()’, which is of pointer type ‘CObject*’ (maybe you meant to use ‘->’ ?)|
Ich verstehe da die Fehlermeldung nicht.
Ich benutze doch schon den '->'-Operator.Die Variablen Opjects und it würde ich auch gern als Zeiger machen wollen.
Nur, wie kann ich erkennen, wie ich auf den Listeninhalt zugreifen muss?Einen schönen Dank.
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C (alle ISO-Standards) in das Forum C++ (alle ISO-Standards) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Also wenn du den Iterator dereferenzierst, landest du bei CObject*, und das musst du dann ja auch wieder dereferenzieren. Also (*it)->Get_Position();
this this this this this, genauso geil wie std std std std std, kriegst ja ein Anfall.
-
for( auto o: Objects ) o->Get_Position();
-
Nachdem die Lösung ja schon da ist:
a) Warum nicht std::vector statt std::list?
b) Warum nimmst du eine eine C++11-for-Loop mitfor (CObject *o : Objects) { o->Get_Position(); }
Edit: uups, da war Manni66 schneller. Hatte ich das Edit-Fenster echt schon so lange offen?!
-
Jo, danke schön jetzt funktioniert es.