小编haz*_*zer的帖子

具有 unique_ptr 的结构向量

我已经阅读了许多类似问题的答案,但仍然找不到解决我的问题的方法。

我有结构:

struct Param {
    std::string name;
    std::unique_ptr<Object> default_val;
};
Run Code Online (Sandbox Code Playgroud)

Function我有一个存储 s 向量的类Param。我在某个地方创建了这个参数的向量,并需要将其传递给Function构造函数。

问题出在我尝试将向量传递给构造函数的那一刻。我知道我需要移动所有的unique_ptr东西,我就这么做了。

也许我错过了一些非常简单的事情?

Code snippets

Function

using Params = std::vector<Param>;

class Callable : public Object {
public:
    Callable(const Params & params) : params(params) {}
// ...
private:
    Params params;
}
Run Code Online (Sandbox Code Playgroud)

我创建向量的代码:

Params params;
for(auto & p : func_decl->params){
    auto default_val = eval(p.default_val.get());
    Param p(p.id->get_name(), std::move(default_val));
    params.push_back(std::move(p));
}
Run Code Online (Sandbox Code Playgroud)

这里可以不使用吗shared_ptr

输出是: error: use of deleted function 'Param::Param(const Param&)'

c++ memory unique-ptr c++11 c++17

2
推荐指数
1
解决办法
1090
查看次数

标签 统计

c++ ×1

c++11 ×1

c++17 ×1

memory ×1

unique-ptr ×1