実行時チェック操作について質問があります。クラスに次のような(純粋に仮想である)vectorから派生したオブジェクトが含まれている場合:BPAbstractBPAbstract
typedef std::shared_ptr<BPAbstract> Ptr;
std::vector<BPAbstract::Ptr> objects_;
ここで、特定のタイプのオブジェクトをvector.
template<class T>
void
GetObjectsByType( std::vector<typename T::Ptr> list ) const
{
for( BPAbstract::Ptr i : objects_ )
{
// ???? ....
}
}
最良の実装は何でしょうか? i1 つの解決策は、型にキャストしようとするTことです。結果が null でない場合は、それを list に追加できますlist。誰かがより良い解決策を知っていると確信しています...
アイデアのより良い実装の提案も受け入れられます!