C++ - pass-Liste als parameter an eine Funktion
Ich versuche zu bauen ein sehr einfaches Adressbuch. Erstellt habe ich eine Kontakt-Klasse und das Adressbuch ist eine einfache Liste. Ich bin versucht, zu erstellen eine Funktion, um dem Benutzer zu ermöglichen, fügen Sie Kontakte aus dem Adressbuch. Wenn ich meinen code außerhalb der Funktion, funktioniert es. Allerdings, wenn ich steckte es in, es funktioniert nicht. Ich glaube, dass es eine übergabe by reference vs-Wert übergeben werden, problem welches ich nicht behandeln Sie wie ich sollte. Dies ist der code für die Funktion:
void add_contact(list<Contact> address_book)
{
//the local variables to be used to create a new Contact
string first_name, last_name, tel;
cout << "Enter the first name of your contact and press enter: ";
cin >> first_name;
cout << "Enter the last name of your contact and press enter: ";
cin >> last_name;
cout << "Enter the telephone number of your contact and press enter: ";
cin >> tel;
address_book.push_back(Contact(first_name, last_name, tel));
}
Ich bekomme keine Fehler aber wenn ich versuche, um alle Kontakte, die ich sehen kann, nur die Originale.
- Die
list<Contact> addressBook
wird nicht aktualisiert beim aufrufenadd_contact(addressBook);
InformationsquelleAutor Adrian | 2012-02-15
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sind Sie vorbei
address_book
von Wert, so muss eine Kopie von dem, was Sie ist, Wann Sie verlassen den Geltungsbereich desadd_contact
Ihre änderungen sind verloren.Übergabe per Referenz statt:
Weil Sie auf der Durchreise sind-Liste durch den Wert, so ist es kopiert, und neue Elemente werden Hinzugefügt, um eine lokale Kopie innerhalb
add_contact
.Lösung: übergabe per Referenz
Sagen
void add_contact(list<Contact> & address_book)
passieren das Adressbuch von Referenz.Verweis übergeben