如何为我自己的shared_ptr实现自己实现别名构造函数?

时间:2017-04-12 14:13:10

标签: c++ c++11 constructor shared-ptr smart-pointers

我正在尝试自己实现共享ptr模板类。

InvokeAsync的别名构造函数的原型是

shared_ptr

我已经实现了转换构造函数,如下所示,

template< class Y >
shared_ptr( const shared_ptr<Y>& r, element_type *ptr );

Q1。如何在此处访问shared_ptr<T>::shared_ptr(const shared_ptr<U> &p_ownershipObj,T* p_managedObjPtr) { if(p_ownershipObj.m_refCountPtr) // Ql { m_managedObjectPtr=p_managedObjPtr; m_refCountPtr = p_ownershipObj.m_refCountPtr; m_refCountPtr->m_strongReferenceCount++; } } m_refCountPtrshared_ptr<U>m_refCountPtr模板类的私有成员。我知道私有成员无法访问然后编译器可能如何实现此功能?

1 个答案:

答案 0 :(得分:1)

Boost通过使用模板成员朋友或公开成员来解决此问题,具体取决于定义BOOST_NO_MEMBER_TEMPLATE_FRIENDS的值。

例如,朋友声明如下:

template<class Y> friend class shared_ptr;
template<class Y> friend class weak_ptr;