使用 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
的引用计数正确管理,并且不会出现悬挂指针的问题。