我有一个智能指针属性,我想为其创建一个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
}
答案 0 :(得分:2)
如果您要转移函数中指针的(所有权)删除权(删除责任),可以执行以下操作:
void setB(B* b)
{
b_ptr = std::shared_ptr<B>(b);
}