2016-04-24 21 views
0

Was ist der beste Weg, um dynamische Objekte (nicht sicher, ob dies das richtige Wort ist) zu erstellen? Zum Beispiel, wenn ich folgendes ausgeführt:Erstellen neuer "dynamischer" Objekte?

Person man[10]; 


cout << "MENU" << endl; 
cout << "1. Add a person to the list" << endl; 
cout << "2. Delete a person from the list" << endl; 
cout << "3. Change a person's information'" << endl; 
cout << "4. Locate a person by ID number" << endl; 
cout << "5. Locate a person by last name" << endl; 
cout << "6. Print the list on the screen" << endl; 
cout << "7. Load the list from a file" << endl; 
cout << "8. Save the list to a file" << endl; 
cout << "9. Exit the program" << endl; 

cin >> a; 

if (a == 1) { 
     if (i <= 10) { 

      Person man[i]; 
      cout << "Please enter your last name: " ; 
      cin >> last; 
      man[i].setLastName(last); 
      i++; 
      cout << man[i].getLastName(); 

     } 
} 

Wenn ich laufen diese, darf ich meinen Nachnamen eingeben, aber wenn ich ENTER drücken das Programm nicht mehr läuft. Was ist der Grund dafür und gibt es eine bessere Möglichkeit, diese Objekte "Profile" zu erstellen?

Vielen Dank und es tut mir leid, wenn das eine dumme Frage ist.

+0

'Person man [10];' - Sie haben bereits 10 'Person' Objekte erstellt. Suche nach "std :: vector". – PaulMcKenzie

Antwort

0

Der Grund ist Ihr gesamtes Programm nur eine Eingabe cin >> a; und dann überprüfen, ob es gleich 1 ist. Nach dem Block hat das Programm nichts mehr zu tun. Also ist dein Programm beendet.

Wenn Sie den Vor- und Nachnamen Ihres 10-Personen-Objekts bearbeiten möchten, erstellen Sie am besten eine Schleife. For-Schleife können Sie googlen für/während.

Heres ein Beispiel:

int i; 
    while(cin >> i) 
    { 
     if(i == 9) 
      return; 
     else if[....] 
    } 
+0

Wenn ich hinzufügen: cout << man [i] .getLastName(); Es hört immer noch auf. Gibt es danach nichts zu tun? –

+0

weil mein Freund, auch wenn Sie hinzugefügt cout << man [i] .getLastName() ;, Ihr Programm wird immer nach dem Drucken auf Ihrem Bildschirm beenden> _> – JaNL

+0

Sie können versuchen, die während ich Ihnen zu Ihrem hinzufügen Code und sehen, ob es hilft – JaNL

0

Wenn Sie dynamische sagen, Objektzuordnung über neue Betreiber. In Ihrem Code ist das Array bereits mit 10 Elementen deklariert (statische Zuweisung). Daher führen Sie in Ihrem Code keine dynamische Zuweisung durch. Fügen Sie für die dynamische Zuordnung eine Funktion hinzu, die Ihnen ein neues Person-Objekt zurückgeben kann. In dieser Funktion erstellen Sie ein Objekt mit einem neuen Operator und geben dieses Objekt zurück. Auf diese Weise fügen Sie dynamisch neue Objekte hinzu.

Weitere Informationen zur dynamischen Zuweisung finden Sie im neuen Operator.

+0

Dieses Konzept macht Sinn, aber ich bin nicht sicher, was Sie mit einer Funktion meinen, die neues Person-Objekt zurückgeben kann. –

Verwandte Themen