Problem mit Vector von Pointern



  • Hallo,

    folgendes Szenario:

    vector<ChessPlayer*> players_;

    ist ein Vector von ChessPlayer-Pointern, ChessPlayer ist eine eigene Klasse.

    Wie kann ich jetzt auf Elemente des Vectors zugreifen und public-Funktionen der ChessPlayer-Klasse aufrufen?

    string player = *(players_.at(turn_)).getFullName();

    beispielsweise funktioniert nicht. "players_" ist dabei der oben genannte Vector, "turn_" ist ein Integer, getFullName() eine einfach getter-Methode in der Klasse ChessPlayer. Ich hole mir das Element an "turn_"-ter Stelle, dereferenziere und rufe die getter-Methode auf. Was stimmt nicht?

    Liebe Grüße
    WurzelAusZwei



  • string player = players_[turn_]->getFullName();
    

    Eine interessante Frage ist auch, wie du den Vector füllst?



  • players_[turn_]->getFullName();
    

    oder eben mit .at:

    players_.at(turn_)->getFullName();
    

    P.S.: Ich hoffe, diese Zeiger sind nicht besitzend und dir ist klar, dass die Elemente dahinter nicht automatisch vom vector gelöscht werden.



  • Ja, danke ... auf den Pfeiloperator habe ganz vergessen. Aber xyz->i ist ja eigentlich nichts anderes als (*xyz).i.

    Danke jedenfalls!



  • WurzelAusZwei schrieb:

    Ja, danke ... auf den Pfeiloperator habe ganz vergessen. Aber xyz->i ist ja eigentlich nichts anderes als (*xyz).i.

    Ja, wenn man die Klammern richtig setzt.



  • 😃 Ja, das sollte man natürlich machen.


Anmelden zum Antworten