C++ 动态分配类,存在继承问题

C++ 动态分配类,存在继承问题,c++,inheritance,dynamic-allocation,C++,Inheritance,Dynamic Allocation,我试图动态分配一个基本(学生)类数组,然后将派生(数学)类的指针分配给每个数组槽。我可以通过创建一个指向基类的指针,然后将其分配给派生类来让它工作,但是当我尝试将指针分配给一个动态分配的基类数组时,它失败了。我已经在下面发布了我正在使用的代码片段。所以基本上我的问题是,为什么动态分配的一个不能工作 Student* studentList = new Student[numStudents]; Math* temp = new Math(name, l, c, q, t1, t2

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

   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

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++ >注意C++中有更好、更安全的方法,涉及容器类和智能指针。但是,这超出了问题的范围。

好,我在C++书中看到了这一点,我正在从某个地方学习,所以我必须复习一下。<代码>新学生*[NUMSON];<代码>为什么那里有指针?这是我唯一不明白的部分。@dubyaa:因为你需要创建一个项目数组,每个项目都是
学生*