構造体を親クラスで宣言し、それを継承する子クラスで定義することはできますか?私は親クラスshader
と継承したクラス(すなわちsimple_color_shader
)のたくさん持っ :継承クラスで構造体を拡張する
class parent
{
virtual struct AlwaysDifferentStructure;
//Some methods here
//...
};
class child1 : public parent
{
struct AlwaysDifferentStructure
{
int foo;
}
//Some methods here
//...
};
class child2 : public parent
{
struct AlwaysDifferentStructure
{
char* foo;
float bar;
double foobar;
}
//Some methods here
//...
};
だから、実際に私が対処んしようとしていますどのような以下の通りです:
例は次のようになります。各シェーダには独自の頂点構造があります。これらのシェーダの1つを使ってオブジェクトをレンダリングしたいのですが、頂点構造体がどのように正確に見えるかはわかりません。なぜなら、これは常に異なっているからです。だから私はすべての子どもたちに構造体を再宣言し、親を通してアクセスできると思った。だから、基本的にはこのようになりますobject
クラス:
class object
{
parent* m_pParent;
AlwaysDifferentStructure* m_structArray;
};
(あなたは私があなたに伝えるためにしようとしているのか理解していない場合だけ頼む;私の英語は良いことではありません)
私の質問は:これも可能ですか?はいの場合、誰かが私にどのように教えてくれたら分かりますか?
[XY問題](http://xyproblem.info/)のように聞こえます。もしあなたがそのような施設を持っていたら、それは何のために使うのですか?あなたは本当に何を達成しようとしていますか? –
"親からのアクセスを得る"部分を明確にすることはできますか? 'AlwaysDifferentStructure'を使用するコードはどのようなものですか?無意味な 'virtual struct AlwaysDifferentStructure;'行を削除すると、あなたが表示する例がうまくコンパイルされます。さらに役立つことを望むなら、難しい実際の使用状況を表示する必要があります。 –
@IgorTandetnikは、 'new'で配列を作成し、' m_pParent'が指す子の 'struct'を返します。 – Rafiwui