的我有一個共享指針向量:矢量到矢量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