5

我有一个循环,我使用一个函数将 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 运算符时,它需要以某种方式实例化对象吗?

谁能帮我解决这个问题?还是该函数(不是我的项目的一部分)不应该返回指向抽象类型对象的唯一指针?

4

1 回答 1

9

您不能将AbstractType元素直接存储在std::vector. 您可以简单地将unique_ptrs 本身存储在std::vector<std::unique_ptr<AbstractType>>with 中cells.push_back(std::move(cell))

于 2012-08-30T19:54:20.580 回答