2016-03-28 26 views
-2

私はまだC++にいくぶん新しく、リスト内に異なるインスタンスを作成することについてはわかりません。私は私が破壊された場合1で別のものを交換する必要がある直面しています変数(おそらくリスト)内に複数のクラスを格納するにはどうすればよいですか?またはベクトル?多態性

class Foo{ 

} 

class Bar : public Foo { 

} 

class Fin : public Foo { 

} 

問題:私のプログラムでは、私は、基本クラスから継承する複数のクラスを持っています。例えば、

これはBar(s)のスポットになります。リストやベクトルなどを作成して複数のクラスのインスタンスを作成するにはどうすればよいですか?

+1

は意味がありません。 *異なるクラスの*インスタンスをリストに格納したいですか? – immibis

+0

編集されました。ありがとうございました。 –

答えて

1

標準コンテナには異なる型を格納できません(標準コンテナでは、すべての要素が同じ型である必要があります)。

ただし、多型を使用して、親(共通)型にポインタを格納することができます。

デザインを再考し、一般的なメソッドやメンバーを親タイプに移動することができます。

編集1: "クラスの保存" の実装例

std::vector<Foo *> container; 
for (unsigned int i = 0; i < 6; ++i) 
{ 
    if (i & 1) 
    { 
    container.push_back(new Bar); 
    } 
    else 
    { 
    container.push_back(new Fin); 
    } 
} 
    for (unsigned int i = 0; i < 6; ++i) 
    { 
    container[i]->Common_Operation(); 
    } 
+0

大丈夫私はあなたが言っていることが好きです。しかし、私はそれをどのように実装しますか?ポインタを使って子クラスにアクセスするにはどうすればよいですか? –

+1

@DylanLittle:私の編集1を参照してください。また、インターネットで "C++ polymorphism pointer"または "C++ dispatch example"を検索してください。 –

関連する問題