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 mit

    for (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.


Log in to reply