我有一个带有共享指针的向量:
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);
}
}
现在的问题是 Descriptor 是一个抽象类,当我尝试将它们添加到向量时,它正确地指出:
/usr/include/c++/4.7/ext/new_allocator.h|110|error: cannot allocate an object of abstract type ‘DescriptorsNs::Descriptor’|
我可以通过尝试std::dynamic_pointer_cast
所有类型的派生类来解决这个问题,但应该有一种更简单的方法来实现这一点。
谁能告诉我将原始对象复制到返回向量的更好方法?