所以我有一个动态分配的基类数组。我在数组中存储了它的派生类的一些对象。
学生(基)类及其派生类都有一个getInfo()
函数,显然派生类已经覆盖了那个基类getInfo()
。目标是使用getinfo
基类中的函数,然后将派生类的两个对象键入类,回到派生类并使用覆盖的getinfo()
.
直到“打破”的一切都完美无缺。它正在弄清楚如何将对象类型转换回让我丧命的派生类。
我已经确定了一些可能的问题:
1)我没有正确动态分配。很有可能,因为我讨厌指针并且非常讨厌它们。
2)我不知道我在实际类型转换方面做了什么。
有几点需要注意:
1) 基类 getinfo 不是虚拟的
2)我不允许修改基类。
所以,混乱代码的救星。你说什么?你能帮助这个可怜的学生吗?
编辑!!!
更新代码,现在得到“Static_cast from Student ** to Gradstudent * is not allowed”
#include <iostream>
#include "GradStudent.h"
#include "UndergradStudent.h"
int main()
{
int arraySize = 3;
Student* classRoom[arraySize];
GradStudent gst1("Ta", "Da", 4444, 'A', "Death");
cout << gst1;
UndergradStudent ust1("Bluh", "Bluh", 2222, 1);
cout << ust1;
Student bst1( "Blah", "Blah", 1111 );
classRoom[0] = &bst1;
classRoom[1] = &gst1;
classRoom[2] = &ust1;
for (int x = 0; x < arraySize; x++)
{
cout << classRoom[x]->getInfo();
cout << endl;
}
cout << "TEST" << endl;
GradStudent* gStudent = static_cast<GradStudent*>(&classRoom[2]);
cout << gStudent->getInfo();
return 0;
}