2

サイズが変化する 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
}

編集:割り当てのポイントは、ヒープを使用してメモリリークを積極的に回避することであるため、ベクトルを使用できない理由を尋ねる人向け。このような配列を使用すると、格納された値が意図的に削除されます。

4

2 に答える 2

1

コメントはあなたの質問に答えているはずです: 実行時にそのような情報が保持されないため (std::vector対照的に、デバッガーではその内容全体が表示されます)。

于 2013-10-27T22:45:46.457 に答える