実行時チェック操作について質問があります。クラスに次のような(純粋に仮想である)vector
から派生したオブジェクトが含まれている場合:BPAbstract
BPAbstract
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_ )
{
// ???? ....
}
}
最良の実装は何でしょうか? i
1 つの解決策は、型にキャストしようとするT
ことです。結果が null でない場合は、それを list に追加できますlist
。誰かがより良い解決策を知っていると確信しています...
アイデアのより良い実装の提案も受け入れられます!