私は大学のシステムプログラミングコースの宿題としてプロジェクトに取り組んでいます。ポインタ、ベクトル、スタック、ヒープの問題に本当に混乱しました。
C++を使用します。コースであるオブジェクトのベクトルを取得する必要があります。これらのコースオブジェクトには、いくつかの異なるフィールドがあります。私がしたことはこれでした:
vector<CoursesObject> coursevector;
次に、Courses Objectクラスを作成しました。このクラスには、コースに残っているスペースとコースフィールドの名前が含まれています。今、私は新しいコースを追加したいと思います、私はします:
CoursesObject *theCourse = new CoursesObject(name, space);
今、私はそれをハンドラーベクトルに追加したいと思います:
coursevector.push_back(*theCourse);
私が知っていることはすべて、スタック上にCoursesオブジェクトのベクトルを作成し、ヒープ上にある新しいコースへの新しいポインターを作成し、ヒープ内のコースオブジェクトを指すポインターtheCourseをハンドラーベクトルに追加しました。私が言ったことは正しいですか?
これらのコースオブジェクトを削除しようとすると、次のようになります。
for(int i=0; i<coursevector.size(); i++)
delete coursevector.at(i);
これは、ポインタではないというエラーを表示します。しかし、コースベクトルにコースオブジェクトへのポインターを追加していませんか?
誰かが説明してください、私はメモリを正しく処理する必要があり、私はそれを正しく理解していないようです。