2016-04-24 7 views
0

ダイナミック(これが正しい単語であるかどうかわからない)オブジェクトを作成する最適な方法は何ですか? 新しい「動的」オブジェクトの作成?

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(); 

     } 
} 

私はこれを実行する

が、私は私の最後の名前を入力させていただいておりますが、私は、プログラムが実行を停止するEnterキーを押したとき:たとえば、私が実行した場合、次の。これの理由は何ですか?これらのオブジェクトの「プロファイル」を作成するためのより良い方法がありますか?

ありがとうございます。これがばかげた質問であればごめんなさい。

+0

'Person man [10];' - あなたはすでに10個の 'Person'オブジェクトを作成しています。 'std :: vector'を参照してください。 – PaulMcKenzie

答えて

0

あなたのプログラム全体が1つの入力cin >> a;を受け取り、それが1に等しいかどうかをチェックするのはその理由です。ブロックの後にプログラムには何も残っていません。あなたのプログラムは終了しました。

10人のobjの名前と姓をすべて編集するには、ループを作成してください。ループの場合は、for/forのGoogleを使用できます。相続人

例:あなたは、動的言うとき

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

追加する場合: cout << man [i] .getLastName(); それでも終了します。それは後に何かを与えることはありませんか? –

+0

私の友人、あなたがcout << man [i] .getLastName();を加えても、あなたのプログラムはあなたの画面上にそれを印刷した後でも終了します> _> – JaNL

+0

あなたがあなたに提供している間コードとそれが役立つかどうかを確認する – JaNL

0

、オブジェクトの割り当ては、new演算子を経由しています。あなたのコードでは、配列はすでに10要素(静的割り当て)で宣言されています。したがって、コードでは動的割り当てを実行していません。 動的割り当ての場合は、新しいPersonオブジェクトを返す関数を追加します。この関数では、new演算子を使用してオブジェクトを作成し、このオブジェクトを返します。 新しいオブジェクトを動的に追加する方法です。

ダイナミックアロケーションの詳細については、new演算子を参照してください。

+0

その概念は理にかなっていますが、新しいPersonオブジェクトを返すことができる関数が何を意味するのかよくわかりません。 –

関連する問題