基本クラスと派生クラスがあり、基本クラスへのポインターの stl ベクトルを受け取る関数があるとします。
class A { public: int x; };
class B : public A { };
void foo(const vector<A*> &va) {
for (vector<A*>::const_iterator it = va.begin(); it < va.end(); it++)
cout << (*it)->x << endl;
}
ポインタのリストを派生クラスに渡す方法はありますか? すなわち:
vector<B*> vb;
// ... add pointers to vb ...
foo(vb);
上記により、次のコンパイラ エラーが発生します。
error: could not convert ‘vb’ from ‘std::vector<B*>’ to ‘std::vector<A*>’
B* は A* に変換可能ですが。
最後に、単純なポインターの解決策がある場合、ブースト共有ポインターでも機能しますか?