次のコードを検討してください。
#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;
次のアプローチを試しましたが、うまくいきませんでした。「'superclass*' から非スカラー型 'subclass' への変換が要求されました」および「'superclass*' から非スカラー型 'subclass2' への変換」というエラーが表示されます。要求された」
subclass s1=r.superman[0];
subclass2 s2=r.superman[1];
私は小さな何かが欠けていると確信しています。
PS: 同様の質問は見つかりませんでしたが、存在する場合はリダイレクトしてください。