Une itération à travers un vecteur de pointeurs
Je suis en train de parcourir la main d'un joueur de cartes.
Player.cpp
vector<Card*>::iterator iter;
for(iter = current_cards.begin(); iter != current_cards.end(); iter++) {
cout << iter->display_card() << endl;
}
Iter dans
cout << iter->display_card() << endl;
actuellement vient avec l'erreur": l'Expression doit avoir pointeur vers le type de classe".
De même, current_cards est déclarée avec:
vector<Card*>current_cards;
En outre, la display_card() la méthode est simple:
Card.cpp
string Card::display_card(){
stringstream s_card_details;
s_card_details << "Colour: " << card_colour << "\n";
s_card_details << "Type: " << card_type << "\n";
return s_card_details.str();
}
J'ai regardé sur les différentes ressources et tout ce qui a été suggéré pour les mêmes types de questions n'a pas fonctionné pour moi. Merci pour toute aide!
Ce message d'erreur sons en arrière.
OriginalL'auteur Red Shift | 2014-04-27
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
La
*
opérateur vous donne l'élément référencé par l'itérateur, qui dans votre cas est un pointeur. Ensuite, vous utilisez la->
déréférencer le pointeur.OriginalL'auteur Reto Koradi
Vous avez déréférencer l'itérateur à accès le pointeur:
Une autre observation est le
iter++
ce que vous devez éviter dans le bénéfice de++iter
(voir https://stackoverflow.com/a/24904/2077394).Selon le conteneur, vous pouvez également éviter d'appeler end() à chaque itération.
(Par la façon dont il sera toujours aider à fournir une quantité minimale reproductible exemple comme je l'ai écrit juste quand vous posez la question.)
OriginalL'auteur Joky
De références de la iterator iter-> donne un pointeur vers un objet de type de Carte, vous devez écrire (*iter)->display_card();
OriginalL'auteur Rakib