C ++ - Liste als Parameter für eine Funktion

8

Ich versuche ein sehr einfaches Adressbuch zu erstellen. Ich habe eine Kontaktklasse erstellt und das Adressbuch ist eine einfache Liste. Ich versuche, eine Funktion zu erstellen, um dem Benutzer das Hinzufügen von Kontakten zu dem Adressbuch zu ermöglichen. Wenn ich meinen Code außerhalb der Funktion nehme, funktioniert es OK. Wenn ich es jedoch einfüge, funktioniert es nicht. Ich glaube, es ist ein Vorübergehen gegen ein Wertüberschreitungsproblem, das ich nicht so behandle, wie ich es sollte. Dies ist der Code für die Funktion:

%Vor%

Ich bekomme keine Fehler, aber wenn ich versuche, alle Kontakte anzuzeigen, kann ich nur die ursprünglichen sehen.

    
Adrian 15.02.2012, 22:42
quelle

4 Antworten

8

Sie übergeben address_book nach Wert, also wird eine Kopie von dem, was Sie übergeben, gemacht und wenn Sie den Bereich add_contact verlassen, sind Ihre Änderungen verloren.

Übergeben Sie stattdessen den Verweis:

%Vor%     
ildjarn 15.02.2012, 22:46
quelle
2

Da Sie die Liste nach Wert übergeben, wird sie kopiert und neue Elemente werden zu einer lokalen Kopie in add_contact hinzugefügt.

Lösung: Weitergabe als Referenz

%Vor%     
Krizz 15.02.2012 22:46
quelle
1

Sagen Sie void add_contact(list<Contact> & address_book) , um das Adressbuch als Referenz zu übergeben.

    
Kerrek SB 15.02.2012 22:46
quelle
1

Nach Referenz

%Vor%     
Gran Torino 15.02.2012 22:49
quelle