我阅读了有关 std::enable_shared_from_this
的内容,我了解它的工作原理,但我不明白它旨在解决什么问题?
例如来自这里:What is the usefulness of `enable_shared_from_this`?
class Y: public std::enable_shared_from_this<Y>
{
public:
std::shared_ptr<Y> f()
{
return shared_from_this();
}
};
std::shared_ptr<Y> p(new Y);
std::shared_ptr<Y> q = p->f();
是的,很好,我们可以编写 q=p->f();
,但为什么不直接
q = p;
?
一般情况下我们有shared_ptr
,但由于某些原因它在某处
不可用,所以我们必须从this
恢复它,但是如果我们将原始指针从 shared_ptr
传递到 somewhere
那么我们就有问题了,因为如果我们从 获取指针,所有
,
并将原始指针传递给某人。shared_ptr
安全都会消失>std::shared_ptr::get
最佳答案
您的类中有一个方法需要分发指向 this 的弱指针或共享指针。不只是返回,还可能调用不同的函数,将指向自身的 shared_ptr 传递给它。
您要么必须使用 shared-ptr-to-this 扩充该方法,将其更改为采用共享 ptr 的非方法,在类中存储指向 this 的弱 ptr,要么从 enable_shared_from_this 继承。
enable_shared_from_this 基本上是“给你自己存储一个 weak_ptr”,在 shared-ptr 创建代码的帮助下对其进行初始化。
关于c++11: std::enable_shared_from_this 现实生活中的例子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33816169/