class A { }
class B : public A { }
std::vector<B*> things;
void Func1(const std::vector<B*>& Bthings) {}
void Func2(const std::vector<A*>& Athings) {}
Func1(things); // ok
Func2(things); // not ok
私は上記のようなコードにいくつか問題があります。オブジェクトへのポインタのstlコレクションがありますが、私はFunc2にサブクラスを認識させたくありません。これを行うには良い方法がありますか?私はstd::vector<B*>
がstd::vector<A*>
ではないことを知っていますが、これはまれな問題だとは思いません。私が考えることができるのは、ちょうど間違っているA *とB *の2つの別々のリストを持つことです。stlコレクションと多型
テンプレートはそれほど素晴らしいものではありませんが、私は "全体のベクトルをコピーする" – DanDan