使用智能指针属性创建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

CAD对象的关闭

C++智能指针shared_ptr 定位删除器(仿函数)

js中的访问器属性中的getter和setter函数实现数据双向绑定

KVO底层实现原理