08/02/24 18:52:47
継承について教えてください
CFooから派生したCFooEx0、CFooEx1、CFooEx2、CFooEx3があるとします。
そして、それぞれCJissou0、CJissou1、CJissou2、CJissou3に派生してるとします。
その上、CJissou0、CJissou1はIHoge0を、CJissou2、CJissou3はIHoge1を実装しているとします。
図にするとこんな感じ。
CFoo─CFooEx0┬CJissou0
IHoge0┘
CFoo─CFooEx1┬CJissou1
IHoge0┘
CFoo─CFooEx2┬CJissou2
IHoge1┘
CFoo─CFooEx3┬CJissou3
IHoge1┘
CFooとCFooEx~は弄らないとして、IHoge~のインターフェイス関数をCJissou~に実装します。
で、マネージャー的な物例えば、std::vector<CFoo *> vecにそれぞれの実態を入れて、
CJissou~の関数を呼びたいのですが呼ぶ際には、
dyanamic_cast<CJissou0 *>(vec[0])->Test();見たいな事をしないといけないと思います。
でもそういう呼び出しだとIHoge~も意味が無くなってしまうし、数が多くなると厳しくなります。(IHoge~は数個)
だから、dyanamic_cast<IHoge0 *>(vec[0])->Test();//エラー
見たいな呼び方をしたいのですがどうすればいいのでしょうか?