• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:複数の派生クラスオブジェクトを一括して取り扱う方法)

C++で派生クラスオブジェクトを一括して取り扱う方法

このQ&Aのポイント
  • C++で派生クラスオブジェクトを一括して取り扱う方法を探しています。
  • 現在の方法ではコーディング量が非常に増えて非効率的です。
  • 同じクラスなので、一括して検索できる方法を知りたいです。ポインタを取得してから操作する予定です。

質問者が選んだベストアンサー

  • ベストアンサー
noname#5537
noname#5537
回答No.1

基底クラスのポインタを使えば,一律に扱えます。 A *a[1000]; a[0] = new A1; a[1] = new A2;  : for (i=0 ; i<1000 ; i++) {  if (a[i]->GetID() == 100) { ... } } さらに,仮想関数を使うとキャストも不要になります。 class A { public:  virtual void Action() { std::cout << "A" << std::endl; } }; class A1 : public A { public:  virtual void Action() { std::cout << "A1" << std::endl; } }; class A2 : public A { public:  virtual void Action() { std::cout << "A2" << std::endl; } }; // A *target = a[0]; a[0]->Action(); # new したら delete もお忘れなく。

zico2
質問者

お礼

連絡が遅くなってすみません。 ご教示ありがとうございます。 おかげさまで、うまくいきました。 基底クラスで変数宣言しておけば使えるなんて クラスのすばらしさをまた実感しました。 どうもありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#5537
noname#5537
回答No.2

> A *target = a[0]; > a[0]->Action(); ↑意味不明ですね。 zico2 さんの例に合わせて, A *target = a[0]; target->Action(); と書くつもりが…,ついうっかり。 もちろん, a[0]->Action(); だけでも OK です。

すると、全ての回答が全文表示されます。

関連するQ&A