Pass ein dynamisches array von Objekten, die auf Funktion
Ich bin in den Prozess des Lernens, c++. Also ich kenne eine Methode, durch die Sie etwas schicken, um zu funktionieren und dann so arbeiten, als ob es war call-by-value, aber eigentlich ist es call-by-reference. Zum Beispiel
void myFUNC(string& x)
Nun, ich habe ein dynamisch erstelltes array von Objekten. Ich möchte das array übergeben an Funktion wie die Methode oben. Hier ist der code-Schnipsel
City *p = new City[number]; //pointer to dynamic array of class objects
//function prototype
void list_cities(int number, City p[]){
for(int i=0; i<number; i++){
cout<<p[i].get_name()<<endl;
}
}
Gewusst wie: übergeben Sie das dynamische array-Funktion wie die oben genannte Methode
BTW, lieber
etwas einfacher? nur mir helfen, senden Sie das dynamische array-Funktion
Was meinst du? Es ist nichts leichter, als
list_cities(number, p);
BTW, lieber
std::vector
.etwas einfacher? nur mir helfen, senden Sie das dynamische array-Funktion
Was meinst du? Es ist nichts leichter, als
list_cities(number, p)
InformationsquelleAutor Fahad Rana | 2015-03-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Arrays sind standardmäßig umgewandelt zu Zeiger, die dann als Referenz übergeben. Also, es gibt keine Bestimmung für explizit übergeben von arrays per Referenz. Das ist,
ist nicht
p[]
übergeben als Referenz, aber machtp[]
ein array von Referenzen.Code:
Verfolgt hier einen link, arrays sind nicht durch Verweis übergeben, array to pointer Konvertierung durchgeführt wird. In diesem Fall kein array selbst existiert, gibt es nur einen Zeiger.
InformationsquelleAutor shauryachats
Verwirrend, eine Funktion parameter, der aussieht wie ein array
City p[]
ist eigentlich ein Zeiger ist, entsprichtCity * p
. So können Sie einfach übergeben Sie einen Zeiger auf das dynamische array:Sagte, lieber freundliche Typen wie
std::vector<City>
so dass Sie nicht haben, zu jonglieren Zeiger und gezielt vermeiden von Speicherlecks und schlimmer.InformationsquelleAutor Mike Seymour
Mit
std::vector
können Sie auch Folgendes tun:Sie sollten definitiv darüber zu Lesen. Es ist ein container aus der c++ Standard Template Library, die im Grunde aus einem sehr dünnen wrapper um die dynamischen Arrays. Aber im Gegensatz zu dynamischen arrays es bietet grundlegende Funktionen wie z.B. für das einfügen oder entfernen von Elementen und verarbeiten kann die array-Größe für Sie.
InformationsquelleAutor Satara