c++で,配列またはvectorの継承について質問があります. 下のように親クラス・子クラスの2クラスを用意します. //class.h

C言語関連 | プログラミング34閲覧xmlns="http://www.w3.org/2000/svg">250

ベストアンサー

1

1人がナイス!しています

ThanksImg質問者からのお礼コメント

悩みましたが,テンプレートを使うことにしました. arrの型はchildで持ちたかったので... 皆さんご意見いただきありがとうございました.

お礼日時:2/24 6:47

その他の回答(2件)

1

この場合はテンプレートがいいかなと思います。 ポインタにする場合は、Parent のデストラクタを仮想デストラクタにしないと、Child のデストラクタが呼ばれなくなるので、その点は注意が必要です。

1人がナイス!しています

1

void test(std::vector<Child> &arr) を作るか、 std::vector<Child> arr; を std::vector<Parent> arr; に変えるか、どちらかじゃないかと。

1人がナイス!しています

それか、 void test(std::vector<Parent*>& arr) { for (auto e : arr) { std::cout << e->Number() << std::endl; } } として、 std::vector<Parent*> arr; for (int i = 0; i < 10; i++) { Child *p1 = new Child(i); arr.push_back(p1); } test(arr); のようにするか。 (arr の各要素に対して delete する必要あり)