サイズが変化する C++ の配列を使用しようとしています。何らかの理由でサイズが変わらず、1 つの文字列しか保持されません。難しいのは、ユーザーが追加するコースの数を入力できないことです。代わりにaddCourse
、ユーザーが停止するまで関数が呼び出されます。ベクトルは使用できません (これは学校の課題のためであり、サイズ変更配列が必要です)。配列が1つの文字列しか保持していないように見える理由について、私は立ち往生していnumCourses
ます。文字列と同等のものを保持していると思います。関数を呼び出すたびに複数の文字列を保持するようにサイズを変更するにはどうすればよいですか?
void Student::addCourse(string* courseName)
{
int x;
numCourses += 1;//increments number of courses
string newCourse = *courseName;
string* newCourses = new string[numCourses];//temporary array
for(x=0; x<numCourses - 1; x++)//fills temp array with the values of the old
{
newCourses[x] = courses[x];
}
newCourses[numCourses - 1] = newCourse;//adds extra value
delete[] courses;//removes original array
courses = newCourses;//sets the new course list
}
編集:割り当てのポイントは、ヒープを使用してメモリリークを積極的に回避することであるため、ベクトルを使用できない理由を尋ねる人向け。このような配列を使用すると、格納された値が意図的に削除されます。