使用智能指针属性创建setter函数? [关闭]
Posted
技术标签:
【中文标题】使用智能指针属性创建setter函数? [关闭]【英文标题】:Create a setter function by using a smart pointer Attribute? [closed] 【发布时间】:2018-07-08 09:58:02 【问题描述】:我有一个智能指针属性,我想为它创建一个 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
【问题讨论】:
您希望b_ptr
与当前拥有b
的任何人共享所有权吗?还是要将所有权转让给b_ptr
?
转让所有权@Galik
【参考方案1】:
如果你想在你的函数中转移指针的所有权(删除的责任)你可以这样做:
void setB(B* b)
b_ptr = std::shared_ptr<B>(b);
【讨论】:
以上是关于使用智能指针属性创建setter函数? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在 PyGetSetDef 中使用闭包来重用属性 getter-setter