【发布时间】:2014-10-11 17:39:02
【问题描述】:
我试图通过从头实现 shared_ptr 来了解它是如何工作的,但我不知道如何检测 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 分配给内部存储的弱引用。
是的,怎么做?
【问题讨论】:
标签: c++ boost std shared-ptr enable-shared-from-this