0

このコードを見てください: コンソールから多数の文字列を読み込んで、それらを動的配列に格納しようとしています。

int Doctor::addPatients()
{
  string* names = NULL;
  int num;
  cout << "how many patients are to be added? ";
  cin >> num;
  numPatients=num;
  names = new string[numPatients];
  for(int i=0;i++;i<numPatients){
    cout << "enter the next patient's name: ";
    cin.clear();
    cin >> names[i];
  }
  patients = names; //patients is a private member variable of class Doctor
}

このコードを実行すると、次のエラーが発生します。

malloc: *** error for object 0x10c100898: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6

どんな助けでも大歓迎です

4

3 に答える 3

3
for(int i=0;i++;i<numPatients)  // Condition is the second expression in for syntax

構文が間違っています。

for(int i=0;i<numPatients; i++)

どのコンパイラを使用していますか?実行時エラーよりもコンパイルエラーが発生するはずです。また、コピーコンストラクターを作成しましたか?詳細については、「三つのルール」を参照してください。仕事を楽にするために、を使用してstd::vector<std::string>ください。

于 2012-10-03T13:29:52.393 に答える
3

整数 i を初期化しません

于 2012-10-03T13:25:59.980 に答える
1

forステートメントでは、for(int i;i++;i<numPatients)

i0に初期化する必要があり、条件は2番目のパラメーターである必要があります正しい形式は-である必要があります

for(int i=0;i<numPatients;i++)

cin文字列入力を取得するのに適した方法ではありません。cinは、スペース文字(space、newline、tab ..)が表示されるまでのみ読み取ります。または、getline関数を使用します-

構文:

getline(cin,names[i])
于 2012-10-03T13:28:50.210 に答える