08/07/02 16:03:07
VC++のスレから来ました。相談させてください。
以下の710の質問をしました。
711の回答をもらいました。
それはそうだ、と納得しました。
---
710 :デフォルトの名無しさん [↓] :2008/07/02(水) 15:02:13
templateの使い方を教えてください
class parent;
class child : parent;
の2つのクラスがあって、
void hogeFunc(vector<shared_ptr<parent> > & param)
を呼び出したいとき、
vector<shared_ptr<parent> > vp;
は渡せるけど、
vector<shared_ptr<child> > vc;
が渡せないのはなんでかわからないです。
お分かりの方、理由を教えていただけないですか。
ちゃんと、pとcは親子関係にあるので問題ないと思っています。
711 :デフォルトの名無しさん [↓] :2008/07/02(水) 15:07:53
vector<shared_ptr<child> >& から vector<shared_ptr<parent> >& に変換できないから。
---
で、解決方法について相談させてください。以下は正しいですか?
・ void hogeFunc(vector<shared_ptr<parent> > & param)
のように、多態をvectorでやろうとしてるのが根本的に間違っている。
間違っているならこういったコンテナの要素を多態で扱いたいときは、
どのようにコーディングされているのか教えてください。