我讀了關於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