ファイルから読み込んだ後にリンクリストを作成しようとしています。私はそれを実行すると、単にハングアップします。私は問題が&コースの割り当てに関連していることを知っています(私は間違っているかもしれません)。 ご指摘いただければ幸いです。自己参照オブジェクトのバイナリファイルからメモリ内のリンクリストを作成するC++
Course course;//this one to read from file
Course* fileCourse = new Course();//this populates linked list
fstream Read("Courses.dat", ios::in | ios::binary);
if(!Read)
cout << "Error Reading from file Courses.dat\n" << endl;
else
{
Read.read(reinterpret_cast<char*>(&course), sizeof(Course));
fileCourse->setNextCourse(&course);//problem here perhaps?
while(Read && !Read.eof())
{
Read.read(reinterpret_cast<char*>(&course), sizeof(Course));
fileCourse->setNextCourse(&course);
if(head == NULL)
{
head = fileCourse;
}
else
{
Course* tmp = head;
tmp = tmp->getNextCourse();
while(tmp->getNextCourse() != NULL)
{
tmp = tmp->getNextCourse();
}
tmp->setNextCourse(fileCourse);
}
}
}
問題は、ファイルからCourseオブジェクトを読み取った後、そのままでは有効ではないという事実にありました。私はプライマリコンストラクタを呼び出し、このようなデータから新しいオブジェクトを作成することを余儀なくされました。 fileCourse = newCourse(course.getName()、course.getCode()); –