首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将构造函数中动态分配的数组分配给唯一的智能指针成员变量

将构造函数中动态分配的数组分配给唯一的智能指针成员变量
EN

Stack Overflow用户
提问于 2019-02-22 17:26:40
回答 1查看 66关注 0票数 3

在下面的例子中,我有一个智能指针sp作为成员变量,我想在构造函数中给它分配一个动态分配的数组,但是我得到了一个编译器错误no match for ‘operator=’,那么正确的方法是什么呢?

在下面的例子中,我有一个智能指针sp作为成员变量,我想在构造函数中为它分配一个动态分配的数组,使用智能指针的reset()方法是正确的方法,还是应该使用共享的智能指针?

代码语言:javascript
复制
struct SampleStructure
{
std::unique_ptr<idx_t[]> sp;

SampleStructure(int a, int b){

    sp.reset(new idx_t[a + 1]); 
 }
};
EN

Stack Overflow用户

发布于 2019-02-22 17:31:31

您不能使用operator=,因为std::unique_ptr不能直接从原始指针assigned,如您所示,您必须使用reset(),它将替换托管对象(在unique_ptr初始化之后)。

您可以通过构造函数中的成员初始化器列表直接初始化数据成员sp;然后您不需要“赋值”(替换)。例如:

代码语言:javascript
复制
SampleStructure(int a, int b) : sp(std::make_unique<idx_t[]>(a + 1)) {}
票数 5
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54823866

复制
相关文章

相似问题

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