sor*_*iak 5 c++ abstract-class stdvector c++11
我有一个循环,我使用一个函数将std :: unique_ptr返回给抽象类的对象.我想通过push_back将这些对象存储到std :: vector中.但由于对象是抽象类型,我得到以下错误:
error: cannot allocate an object of abstract type
Run Code Online (Sandbox Code Playgroud)
为线
cells.push_back(std::move(*cell));
Run Code Online (Sandbox Code Playgroud)
其中,cell是std::vector抽象类型的类型,并且cell是类型
std::unique_ptr<AbstractType>&& cell
Run Code Online (Sandbox Code Playgroud)
(我实际上传递cell给一个处理程序类)我知道一个人不能实例化一个抽象类型,因为我理解std:move操作符需要以某种方式实例化对象?
任何人都可以帮我解决问题吗?或者函数(不是我的项目部分)是否应该返回一个指向抽象类型对象的唯一指针?
您无法AbstractType直接在元素上存储元素std::vector.您可以简单地将unique_ptrs本身存储在std::vector<std::unique_ptr<AbstractType>>with中cells.push_back(std::move(cell)).
| 归档时间: |
|
| 查看次数: |
4019 次 |
| 最近记录: |