我有一个关于运行时检查操作的问题。如果一个类包含一个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
转换为类型T
,如果结果不为 null,那么我可以将其添加到列表中list
。我很确定有人知道更好的解决方案...
更好地实施该想法的建议也是可以接受的!