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.