我创建了两个类,Class和Students。在类的构造函数中,我需要动态地初始化指向Student对象的指针数组(pStudents)(我不能使用矢量),初始化为null。当我使用函数addStudent将一个学生添加到类中时,我希望能够搜索第一个空地址的指针数组,然后将该学生分配给该数组中的该点。如果学生已经在课堂上,我也希望能够搜索该课程,看看这个学生是否已经在那里。向数组添加指针时出现分段错误
当我尝试编译程序时,出现分段错误。我知道它与我在创建pStudents数组时使用堆内存的方式有关,但我不确定如何解决此问题。
下面是我已经宣布在类的头文件的数组:
Student **ptrStudents;
这是Class对象的构造函数。现在,我使用数组的任意大小40。
Class::Class()
{
Student **ptrStudents = new Student*[40];
}
这里是函数addStudents,它将一个指向学生对象的指针作为它的参数。请注意,字符串名称是所有学生的数据字段。
Class::addStudents(Student *student)
{
string name = student -> getName();
string nameTemp;
for (int i = 0; i < 40; i++)
{
if (ptrStudents[i] != 0)
{
nameTemp = ptrStudents[i] -> getName();
if (name == nameTemp)
{
cout << "This student is already in the class." << endl;
return;
}
}
else if (ptrStudents[i] == 0)
{
ptrStudents[i] = student;
return;
}
这里是我的工作主要功能:
int main()
{
Class Economics;
Student student1("Hannah");
Economics.addStudent(&student1);
return 0;
}
什么是'ptrFlights [I]'? – YankeeWhiskey 2013-04-06 18:46:33
当你编译或者运行时,你会遇到段错误吗?你的意思是编译时出错了吗? – 2013-04-06 18:48:10
对不起,修正了我的错字给ptrStudents。我应该更清楚,这是我运行程序的时候。它会编译但不能正确运行(我正在运行的编辑器将两个步骤结合在一起)。 – 2013-04-06 18:51:34