C++:: Call-Methode der Klasse mit der vector-iterator?
Habe ich eine Klasse namens Zimmer, das Zimmer Klasse hat setPrice und display-Funktion.
Ich gespeichert-Zimmer-Objekte in einem vector:
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"));
In meiner main-Funktion Erzeuge ich eine Funktion anzeigen zeigen Sie alle Zimmer. Hier ist mein 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
}
}
Aber es nicht nennen, den Raum der display-Methode.
Wie rufe ich den Raum(Klasse)'s Methode display (kein argument) und setPrice(1 argument) Methode?
InformationsquelleAutor cpp_noob | 2011-01-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dereferenzierung eine höhere Priorität hat als Mitglied Zugriff. Man könnte hinzufügen, parens (
(*it).display()
), aber Sie sollten benutzen Sie einfach die Tastenkombination, die eingeführt wurde vor langer Zeit (in C):it->display()
.Natürlich die gleiche Regel gilt für die Zeiger und alles andere, können aufgelöst werden (andere Iteratoren, smart pointers, etc.).
Wenn es trotzdem zu nennen spezifische vector-element die Funktion. Wie: Raum[2]->setPrice(200)
gibt Ihnen etwas. Es ist ein Objekt, rufen die Methode, als würden Sie auf ein beliebiges Objekt (
room[2].setPrice(200)
). Wenn Sie, dass etwas getan werden muss, aufgelöst werden, wieder müssen Sie zu dereferenzieren es - wieder(*(room[2])).setPrice(200)
oderroom[2]->setPrice(200)
.InformationsquelleAutor
Versuchen
(*it).display()
oder einfachit->display()
.InformationsquelleAutor Alexandre C.
Iteratoren sind ein bisschen wie Zeiger. Also willst du entweder:
oder:
Room *
(in dem Beispiel, es ist es nicht - und wenn Sie es war, die erste falsch ist, statt).Vielen Dank für die Schmierblutungen. Korrigiert jetzt.
InformationsquelleAutor Oliver Charlesworth
Vektor, können Sie auch die klassische form
InformationsquelleAutor user11135761