如何将shared_ptr初始化为结构

时间:2016-01-31 18:39:20

标签: c++ initialization shared-ptr

我有两种结构定义。

struct ST1               
{                        
  int iVar1;               
  int iVar2;             
  float iVar3;
};

struct ST2
{
 std::shared_ptr<ST1> p_sVar4;
};

ST2 structure2; 

我尝试初始化structure2

structure2.p_sVar4 = new ST1();

但这是错误的。

如何初始化structure2

2 个答案:

答案 0 :(得分:3)

使用std :: make_shared:

 structure2.p_sVar4 = std::make_shared<ST1>();

(通常优先于:

structure2.p_sVar4 = std::shared_ptr<ST1>(new ST1)

答案 1 :(得分:0)

使用reset

structure2.p_sVar4.reset(new ST1);