配列(vector)の継承について
vector(配列)の継承について
c++で,配列またはvectorの継承について質問があります.
下のように親クラス・子クラスの2クラスを用意します.
class Parent
{
public:
Parent(int number) : number(number){};
~Parent(){};
int number;
};
class Child : public Parent
{
public:
Child(int number) : Parent(number + 1){};
};
その後,下のように,親クラスを引数に持つtest関数に引き渡そうとするとエラーが起きます.
#include <iostream>
#include <vector>
#include "class.h"
void test(std::vector<Parent> &arr);
int main()
{
std::vector<Child> arr;
for (int i = 0; i < 10; i++)
{
auto d1 = Child(i);
arr.push_back(d1);
}
test(arr);//エラー
}
void test(std::vector<Parent> &arr)
{
for (const auto e : arr)
std::cout << e.number << std::endl;
}
やりたいこととしては,子クラスのvector(配列)を関数testに引数で渡せるようにすることです.
テンプレートなどを使うべきなのでしょうか?
もしそれらを使う場合でも,こうしたほうが良いというアドバイス等ございましたら
ご教授いただけると幸いです.