C++:: Appel de la méthode de classe à l'aide de vecteur itérateur?
J'ai une classe appelée la Chambre, la salle de classe a setPrice et de la fonction d'affichage.
J'ai stocké des objets de la pièce dans un vecteur:
room.push_back(Room("r001", 1004, 2, "small"));
room.push_back(Room("r002", 1005, 2, "small"));
room.push_back(Room("r003", 2001, 4, "small"));
room.push_back(Room("r004", 2002, 4, "small"));
Dans ma fonction principale, j'ai créer une fonction d'affichage afin d'afficher toutes les chambres. Voici mon code:
void displayRoom()
{
vector<Room>::iterator it;
for (it = room.begin(); it != room.end(); ++it) {
*it.display(); //just trying my luck to see if it works
}
}
Mais il ne fait pas appel à la Chambre de la méthode d'affichage.
Comment dois-je appeler la Chambre(classe), la méthode d'affichage (sans argument) et setPrice(1er argument) méthode?
Vous devez vous connecter pour publier un commentaire.
Déréférencement a priorité plus élevée que l'accès des membres. Vous pouvez ajouter des parenthèses (
(*it).display()
), mais vous devriez simplement utiliser le raccourci qui a été introduit il y a bien longtemps (en C) pour cela:it->display()
.Bien sûr, la même règle s'applique pour les pointeurs et tout ce qui peut être déréférencé (autres itérateurs, les pointeurs intelligents, etc.).
room[2].setPrice(200)
). Si quelque chose doit être déréférencé encore une fois, vous avez besoin de déréférencement d'elle - nouveau(*(room[2])).setPrice(200)
ouroom[2]->setPrice(200)
.Essayer
(*it).display()
ou tout simplementit->display()
.Les itérateurs sont un peu comme des pointeurs. Donc, vous voulez soit:
ou:
Room *
(dans l'exemple, il n'est pas - et s'il l'était, la première est à tort à la place).À l'aide de Vecteurs, vous pouvez également utiliser la forme classique