的我有一个共享指针向量:矢量到矢量copys
std::vector<std::shared_ptr<DescriptorsNs::Descriptor> > mDescriptorList;
现在,我想有一个返回矢量与这些对象的副本getter函数:
void CatUpdater::getDescriptorList(std::vector<Descriptor*>& descriptorList) const
{
descriptorList.clear();
for (auto it = mDescriptorList.begin(); it != mDescriptorList.end(); it++)
{
descriptorList.push_back(*it);
}
}
现在的问题是,描述符是一个抽象类,当我尝试将它们添加到载体它正确地指出:
/usr/include/c++/4.7/ext/new_allocator.h|110|error: cannot allocate an object of abstract type ‘DescriptorsNs::Descriptor’|
我可以通过为所有类型的派生类尝试std::dynamic_pointer_cast
来解决此问题,但应该有一个更简单的方法来实现此目的。
任何人都可以告诉我一个更好的方法将原始对象复制到返回的矢量吗?
如果'描述符'是抽象的,你怎么能'std :: vector'?对于多态性,你需要有'std :: vector ' –
Nick
这个向量就像头文件中的那样,我将派生对象赋给它。我将用一个例子编辑 – Minion91
嗯,这是C++ 11,所以也许我错过了新标准中发生了变化的东西...... – Nick