首页 > 解决方案 > 构造函数似乎没有正确初始化我的数组

问题描述

我有一个名为 Student 的课程,其中包含基本信息。我有一个名为 Roster 的类,它是创建一个包含 5 个学生对象的数组。

例如,当我创建一个名册类型 (Roster classRoster;) 时。我的理解是会调用名册构造函数,使用 5 个学生对象创建 classRosterArray。当分配了 5 个学生对象时,学生构造函数将运行,用它们的构造函数信息填充五个学生对象——这并没有发生。显然我没有正确理解某些东西。任何帮助将不胜感激!

    Roster::Roster()
{
classRosterArray = new Student*[rosterSize];
}

学生构造函数看起来像这样。

Student::Student()
{
studentID = "empty";
firstName = "empty";
lastName = "empty";
emailAddress = "empty";
studentAge = 0;
for (int i = 0; i < 3; i++)
{
    daysToComplete[i] = 0;
}
studentDegree = NONE; //no degree loaded with blank constructor

}

我尝试运行一个基本的 printinfo 函数,我希望它打印 5 个版本的“空字段”,但我收到一条错误消息 - 抛出异常:读取访问冲突。 是 0xCDCCDCD1。我相信哪个是未分配的内存?

如果我真的用数据(5 个学生)加载 classRosterArray,一切正常。我只是不明白为什么它不会在声明后立即打印 5 个空白点。

标签: arraysobjectpointersconstructornew-operator

解决方案


推荐阅读