通过使用智能指针属性创建setter函数?

时间:2018-07-08 09:58:02

标签: c++ pointers smart-pointers

我有一个智能指针属性,我想为其创建一个setter函数。

我知道有一种方法可以执行以下操作:

void setB(std::shared_ptr<B> b)
{
    //b_ptr is a shared_ptr
    b_ptr = b;
}

我如何创建以下设置器

void setB(B * b)
{
   // i want to assign b to b_ptr which b_ptr is a shared_ptr
}

1 个答案:

答案 0 :(得分:2)

如果您要转移函数中指针的(所有权)删除权(删除责任),可以执行以下操作:

void setB(B* b)
{
    b_ptr = std::shared_ptr<B>(b);
}