我有一个循环,其中我使用一个函数将std :: unique_ptr返回给抽象类的对象。我想通过push_back将这些对象存储到std :: vector中。但由于对象是抽象类型,我得到以下错误:
error: cannot allocate an object of abstract type
为行
cells.push_back(std::move(*cell));
其中,单元格是抽象类型的std::vector
,cell
的类型是
std::unique_ptr<AbstractType>&& cell
(我实际上将cell
传递给处理程序类)
我知道一个人无法实例化一个抽象类型,因为我理解std:move运算符需要以某种方式实例化对象吗?
有人可以帮我解决问题吗?或者函数(不是我的项目部分)是否应该返回一个指向抽象类型对象的唯一指针?
答案 0 :(得分:9)
您无法直接在AbstractType
上存储std::vector
个元素。您只需将unique_ptr
自己存储在std::vector<std::unique_ptr<AbstractType>>
cells.push_back(std::move(cell))
中。