动态分配类,具有继承问题

时间:2010-11-16 23:47:31

标签: c++ inheritance dynamic-allocation

我试图动态分配一个base(Student)类数组,然后将派生(Math)类的指针分配给每个数组槽。我可以通过创建指向基类的单个指针,然后将其分配给派生类来实现它,但是当我尝试将指针分配给动态分配的基类数组时,它会失败。我已经发布了我正在使用的代码片段。所以基本上我的问题是,为什么动态分配的不工作?

   Student* studentList = new Student[numStudents];  
   Math* temp = new Math(name, l, c, q, t1, t2, f);  
   studentList[0] = temp;                                 

/*Fragment Above Gives Error:

main.cpp: In function âint main()â:
main.cpp:55: error: no match for âoperator=â in â* studentList = tempâ
grades.h:13: note: candidates are: Student& Student::operator=(const Student&)*/



   Student * testptr;
   Math * temp = new Math(name, l, c, q, t1, t2, f);
   testptr = temp
   //Works

1 个答案:

答案 0 :(得分:1)

studentList[0]不是指针(即Student *),它是一个对象(即Student)。

听起来有点像你需要的是指针数组。在这种情况下,您应该执行以下操作:

Student **studentList = new Student *[numStudents];
Math *temp = new Math(name, l, c, q, t1, t2, f);
studentList[0] = temp;

在此代码段中,studentList的类型为Student **。因此,studentList[0]的类型为Student *

(请注意,在C ++中,有更好,更安全的方法来执行此操作,涉及容器类和智能指针。但是,这超出了问题的范围。)