所以我有一个动态分配的基类数组。我已经将其派生类的几个对象存储在数组中。C++类型铸造基础对象到派生对象
学生(基础)班及其派生班都具有getInfo()
函数,显然派生类已经超越了基础getInfo()
。目标是使用基类中的getinfo
函数,然后将类派生类的两个对象类,返回派生类并使用覆盖的getinfo()
。
一切都达到“休息”的作品完美。它正在弄清楚如何将对象强制转换回派生类,这些派生类正在杀死我。
我已经确定了一些可能的问题:
1)我没有动态正确地分配。非常可能,因为我讨厌指针并且非常吮吸它们。
2)我不知道我在做什么实际上类型铸造。
值得注意的几件事情:
1)的基类是getinfo不是虚
2)我不允许修改的基类。
因此,混淆代码的救星。什么说你?你能帮助这个可怜的学生吗?
编辑!
更新代码,现在越来越“的static_cast从学生到** * Gradstudent不允许”
#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;
}
“所以我有一个动态分配的基类数组。” **没有**。你有一个指向**基类对象的**指针数组。 – 2013-02-19 12:16:41