我读了关于std::enable_shared_from_this
,我理解它是如何工作的,但我不明白它旨在解决什么问题?C++ 11: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
,但由于某种原因它不可somewhere
,所以我们必须把它从this
恢复,但如果我们从shared_ptr
到somewhere
然后通过原始指针,我们有,因为所有shared_ptr
安全的问题,如果我们从std::shared_ptr::get
, 获取指针并将原始指针传递给某人,请离开。
'你在你的班级有一个方法,需要发出弱或共享的指针',但为什么我需要在现实生活中这种奇怪的方法? – user1244932
@ user1244932自行注册某处处理程序?使用别名共享指针构造函数将共享指针传递给本身存储的变量?任何你想创建一个共享的ptr副本的原因,而不是在类之外的某些代码中,而不是在一个方法中。 – Yakk
但在这种情况下,将这些东西留给'shared_ptr'的所有者是不是正确的解决方案?它看起来像黑客,当重新分解会花费太多的努力,并使用这种解决方案,但在这种情况下,为什么C++标准委员会关心这种情况? – user1244932