请考虑以下代码:
#include <iostream>
using namespace std;
class superclass;
class subclass;
class subclass2;
class superclass
{
public:
unsigned int a;
superclass **superman;
};
class subclass : public superclass
{
public:
unsigned int b;
};
class subclass2 : public superclass
{
public:
unsigned int b;
};
class runner
{
public:
superclass **superman;
runner()
{
*superman=new superclass[2];
superman[0]=new subclass;
superman[0]->a=3;
superman[1]=new subclass2;
superman[1]->a=4;
}
};
int main() {
runner r;
cout<<r.superman[0]->a<<" "<<r.superman[1]->a;
return 0;
}
如您所见,我想创建对父类的引用的动态分配存储,然后每个父类都可以指向子类,但是我不知道如何从该数组中再次提取子类,因此我可以访问它变量 b;
我尝试了以下方法,但它们对我不起作用并给出错误“从'超类*'转换为非标量类型'子类'请求”和“从'超类*'转换为非标量类型'subclass2'请求”
subclass s1=r.superman[0];
subclass2 s2=r.superman[1];
我确定我错过了一些小东西。
PS:我找不到类似的问题,但如果存在,请重定向我,我也想要一个不需要我使用向量或任何内置的预先存在的库类的解决方案。