gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:14:37 25 4
gpt4 key购买 nike

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

shared_ptr 别名构造函数的原型(prototype)是

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

我已经按如下方式实现了转换构造函数,

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++;
}
}

Q1。如何访问 m_refCountPtrshared_ptr<U>这里? m_refCountPtrshared_ptr 的私有(private)成员模板类。我知道无法访问私有(private)成员,那么编译器可能是如何实现此功能的?

最佳答案

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

例如 friend 声明如下所示:

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

关于c++ - 如何为我自己的 shared_ptr 实现自己实现别名构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43372073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com