首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用unique_ptr初始化结构的向量?

如何用unique_ptr初始化结构的向量?
EN

Stack Overflow用户
提问于 2014-04-03 00:03:47
回答 1查看 2K关注 0票数 1

如何用unique_ptr初始化结构的向量?例如:

代码语言:javascript
复制
#include <memory>
#include <vector>

using namespace std;

struct A
{
    int i;
    unique_ptr<int> p;
};

int main()
{
    vector<A> v{ { 10, make_unique<int>(10) } };
    // error above: cannot convert from initializer-list to vector<A>

    return 0;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-03 00:26:54

代码语言:javascript
复制
vector<A> v{ { 10, make_unique<int>(10) } };

在上面语句的内部大括号中,您正在聚合地初始化A的一个实例,到目前为止还不错。

但是现在没有办法将这个实例从初始化程序列表中移出,您唯一能做的就是复制对象。但是,复制将失败,因为编译器为A生成的复制构造函数由于unique_ptr数据成员而被隐式删除。因此产生了编译错误。

唯一的解决办法就是不要使用带括号的列表。相反,构造一个A实例,然后使用

代码语言:javascript
复制
v.push_back(std::move(a));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22825399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档