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

Create a setter function by using a smart pointer Attribute?

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

我知道有一种方法可以做到这一点:

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

如何创建一个 setter 如下

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

如果您想转移函数中指针的所有权(删除的责任),您可以这样做:

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