2016-05-10 34 views
0

Ich habe einige Probleme mit meinem aktuellen Projekt. Ich habe eine Klasse von Jobs, die innerhalb vector gespeichert werden. Wenn ich versuche, push_back oder pop_back Job mein Programm funktioniert gut (Ich kann nur so oft löschen, wie oft ich Auftrag hinzufügen). Aber wenn ich versuche, anzuzeigen, was in meinem vector ist, bekomme ich Nachricht: Nichts anzuzeigen, vector ist leer, albought I push_back einige Jobs.Kein Wert in Vektor beim Versuch, anzuzeigen

void Job::generirateActivities(vector<Job> job_list) { 

    Smt s1("Default1", 1, 2, 3); 
    Smt s2("Default2", 2, 3, 4); 

    Date d1(1, 1, 2001); 
    Date d2(2, 2, 2002); 

    Job j1(&s1, &d1); 
    Job j2(&s2, &d2); 

    job_list.push_back(a1); 
    job_list.push_back(a2); 
} 

und für das Drucken Ich verwende:

void Job::printJobs(vector<Job> job_list) { 
    if (job_list.empty()) 
    cout << "Nothing to display, vector is empty." << endl; 
    else { 
    for (unsigned int i = 0; i < job_list.size(); i++) 
     cout << i + 1 << ". " <<job_list[i].toString() << endl; 
    } 

Was könnte falsch sein? Irgendwelche Vorschläge?

Danke.

+4

'generirateActivities (Vektor Jobliste) {' - Sie * kopieren * den ursprünglichen Vektor, dann an die Kopie anhängen, nicht das Original. Verwenden Sie eine Referenz: 'vector & job_list'. Gleiches zum Drucken (obwohl es 'const' ist). – BoBTFish

+0

Nun, wenn ich hinzufügen & meine project.exe funktioniert nicht mehr ... – HC1122

+0

@BoBTFish Warum nicht als Antwort posten? – CinCout

Antwort

3

In Ihrem Code haben Sie

void Job::generirateActivities(vector<Job> job_list) { 

Das bedeutet, dass, wenn Sie die Funktion aufrufen Sie eine Kopie des Vektors zu machen und an die Funktion übergeben. Sie fügen Werte hinzu, aber Sie fügen tatsächlich der Kopie hinzu, die bei der Rückkehr zerstört wird.

Sie sollten es ändern, um

void Job::generirateActivities(vector<Job>& job_list) { 

Notiere die & nach Vektor.

+0

Das macht mein Programm zum Absturz. Vielleicht ist das Hauptproblem? object.displayActivity (job_lists); – HC1122

+0

Und auch nichts wird erzeugt (ich weiß das, weil die delete -Methode sagt, dass es nichts zu löschen gibt). – HC1122

Verwandte Themen