我搜索了很多,但我找不到问题的答案:
我有一个课程学生,有很多字段,所以我不想使用复制构造函数。
我应该将文件中的数据保存到地图中。
我从文件中读取一行(所有学生信息保存在一行中)和一个函数( readLine ),它是学生类的公共成员,I解码该行并将其保存到当前学生:
getline(in, line);//read a line
Student s;
s.readLine(line);//Decode the line and save it into s
我之前写过:
map<string, Student> students; //map of student key=student ID.
当我使用这些行时会发生错误
students[Student::getID(line)]=Student(s);
或
students[Student::getID(line)]=s;
例外代码:c0000374
你有什么想法解决这个问题吗?
感谢。
我尝试使用复制构造函数,但它没有运行:
Student(const Student &s){
cout<<"COPY";
}
通话:
Student s;
s.readLine(line);
students[Student::getID(line)]=Student(s);
析构函数:
~Student(){
..
.
delete [] exam;
.
}
答案 0 :(得分:0)
感谢所有想解决问题的人。
我发现了问题。
为了定义对象的映射,最好是注册对象的地址而不是对象。
map<string, Student> students
更改为
map<string, Student*> students
另外,我的朋友 molbdnilo 说我使用了复制构造函数。