C ++构造函数映射对象(已编辑)

时间:2016-10-30 20:20:53

标签: c++ object dictionary copy-constructor

我搜索了很多,但我找不到问题的答案:

我有一个课程学生,有很多字段,所以我不想使用复制构造函数

我应该将文件中的数据保存到地图中。

我从文件中读取一行(所有学生信息保存在一行中)和一个函数( 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;
.
}

1 个答案:

答案 0 :(得分:0)

感谢所有想解决问题的人。

我发现了问题。

为了定义对象的映射,最好是注册对象的地址而不是对象。

map<string, Student> students

更改为

map<string, Student*> students

另外,我的朋友 molbdnilo 说我使用了复制构造函数。