获取指向自身的shared_ptr

使用 enable_shared_from_this。这是一个标准库提供的基类,允许对象安全地创建指向自身的 shared_ptr。以下是一个示例代码,展示如何实现这一点:

#include <iostream>
#include <memory>

class Object : public std::enable_shared_from_this<Object> {
public:
    void functionA() {
        // 获取指向自身的shared_ptr
        std::shared_ptr<Object> self = shared_from_this();
        // 传递self到其他函数
        someOtherFunction(self);
    }

    void someOtherFunction(std::shared_ptr<Object> obj) {
        std::cout << "Object passed to someOtherFunction" << std::endl;
    }
};

int main() {
    std::shared_ptr<Object> objA = std::make_shared<Object>();
    objA->functionA();

    return 0;
}

在这个示例中,Object 类继承了 std::enable_shared_from_this<Object>,并在 functionA 中调用 shared_from_this() 获取指向自身的 shared_ptr。然后,它将这个 shared_ptr 传递给 someOtherFunction

这样可以确保 shared_ptr 的引用计数正确管理,并且不会出现悬挂指针的问题。

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注