Templeate class T的构造函数参数

C++语言 码拜 10年前 (2015-05-11) 1162次浏览 0个评论

想实现一shere_ptr,不知道怎么实现,求教。
template<class T>

class SharedPtr
{
SharedPtr()
{
m_pT = new T();
}
~SharedPtr()
{
delete m_pT;
}

    T* m_pT;
}
关键是T的构造函数参数怎么传入???

19分
用T*来构造shared_ptr
1分
模板类也不是这样写的好吧。 先声明这个类, 然后在定义, 都写在头文件中。
应该是我问题描述得不清楚。自己查了make_shared模版源码,具体是这么实现的:
template< class T, class A1 >
boost::shared_ptr< T > make_shared( A1 const & a1 );

template< class T, class A, class A1 >
boost::shared_ptr< T > allocate_shared( A const & a, A1 const & a1 )
{

::new( pv ) T( a,a1 );

}

template< class T, class A1, class A2 >
boost::shared_ptr< T > make_shared( A1 const & a1, A2 const & a2 );

template< class T, class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9 >
boost::shared_ptr< T > make_shared( A1 const & a1, A2 const & a2, A3 const & a3, A4 const & a4, A5 const & a5, A6 const & a6, A7 const & a7, A8 const & a8, A9 const & a9 )
{

::new( pv ) T( a1, a2, a3, a4, a5, a6, a7, a8, a9 );

}

反正最多支持T的构造函数有9个参数。

引用 1 楼 iyomumx 的回复:

用T*来构造shared_ptr

查了share_ptr源码,构造里确实是指针。不太会用shere_ptr,所以之前说错了


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明Templeate class T的构造函数参数
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!