C++ 地图中用户定义的数据类型有问题
目标:通过钥匙、学生编号制作学生注册地图 问题:似乎由于某种原因,当我向地图添加对象时,操作系统会使我的程序崩溃 我的注册对象的结构:C++ 地图中用户定义的数据类型有问题,c++,maps,user-defined-types,C++,Maps,User Defined Types,目标:通过钥匙、学生编号制作学生注册地图 问题:似乎由于某种原因,当我向地图添加对象时,操作系统会使我的程序崩溃 我的注册对象的结构: private: std::string fName; std::string lName; long studentId; unsigned semester; Vector<Result> results; //User defined data structur
private:
std::string fName;
std::string lName;
long studentId;
unsigned semester;
Vector<Result> results; //User defined data structure, tested and works
我的主要意见是:
int main()
{
Registration Regist;
Registrar R;
Regist.SetStudentId(200);
R.setRegistration(Regist);
}
在windows上,程序返回-1073741819。如果这有帮助的话。你的
向量是否有复制构造函数?如果没有,你需要一个。如果是,您是否使用空列表进行了测试?您显示的所有其他注册成员都可以复制到地图中。快速实验:如果你只是做了一个std::map
,然后只添加向量
s,会发生什么?好吧,我刚刚意识到我的注册构造函数没有为向量分配任何内存。IE构造函数Registration::Registration(){fName=“Not Set”lName=“Not Set”studentId=0;sement=0;}
Hmmm。。。同样的事情,所以我的向量问题似乎。。。谢谢btw@user4581301:)这是否意味着它是我向量中的复制构造函数?不确定你的意思<代码>向量结果
分配向量,但我不知道向量的内部结构。现在我应该问为什么不直接使用std::vector?学校作业?
void Registrar::setRegistration(Registration& regist)
{
studentRegistrations[regist.GetStudentId()] = regist; //Crashes here
}
int main()
{
Registration Regist;
Registrar R;
Regist.SetStudentId(200);
R.setRegistration(Regist);
}