我想從頭開始學習shared_ptr是如何工作的,我無法弄清楚如何檢測T的基類。shared_ptr <T>如何檢測到T派生自enable_shared_from_this <T>?
我試過使用is_base_of(),但是這給出了一個const值,我不能使用if語句來設置對象的內部weak_ptr。
我是基於這樣的思考:
template <class T>
class shared_ptr
{
shared_ptr(T* ptr)
{
...
}
shared_ptr(enable_shared_from_this<T>* ptr)
{
...
Ptr->m_this = weak_ptr<T>(this);
}
};
,但至今沒有運氣。 Boost和VC++的實現對我來說太混亂了,我正在尋找一個簡單的解釋。
Here它說
STD的構造:: shared_ptr的檢測enable_shared_from_this鹼的存在下與新創建的std :: shared_ptr的分配給該內部存儲的弱引用。
是啊,怎麼樣?
爲什麼不夠的,只是有'模板 magic_construct(enable_shared_from_this *股)'?爲什麼我需要'sp'和'rp'參數? –
Alex
2014-10-22 10:01:58