【发布时间】:2013-11-02 00:09:42
【问题描述】:
我有一个关于运行时检查操作的问题。
如果一个类包含从BPAbstract 派生的对象的vector(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 类型,如果结果不为空,那么我可以将其添加到列表list。我很确定有人知道更好的解决方案...
更好地实施该想法的建议也是可以接受的!
【问题讨论】:
-
“我很确定有人知道更好的解决方案。” ― 我很确定情况并非如此。
-
好的,谢谢你的回答:)
标签: c++ c++11 typechecking