如何存储由std :: unique_ptr给出的抽象类对象的向量?

时间:2012-08-30 19:14:21

标签: c++ c++11 abstract-class stdvector

我有一个循环,其中我使用一个函数将std :: unique_ptr返回给抽象类的对象。我想通过push_back将这些对象存储到std :: vector中。但由于对象是抽象类型,我得到以下错误:

error: cannot allocate an object of abstract type

为行

  cells.push_back(std::move(*cell));

其中,单元格是抽象类型的std::vectorcell的类型是

std::unique_ptr<AbstractType>&& cell

(我实际上将cell传递给处理程序类) 我知道一个人无法实例化一个抽象类型,因为我理解std:move运算符需要以某种方式实例化对象吗?

有人可以帮我解决问题吗?或者函数(不是我的项目部分)是否应该返回一个指向抽象类型对象的唯一指针?

1 个答案:

答案 0 :(得分:9)

您无法直接在AbstractType上存储std::vector个元素。您只需将unique_ptr自己存储在std::vector<std::unique_ptr<AbstractType>> cells.push_back(std::move(cell))中。