boost::scoped_ptr作為成員變量的使用
原因:scoped_ptr的賦值操作符和拷貝構造函數被聲明為了provate,所以它不能被賦值。
boost中scoped_ptr的部分代碼:
private:
T * px;
scoped_ptr(scoped_ptr const &);
scoped_ptr & operator=(scoped_ptr const &);
typedef scoped_ptr<T> this_type;
void operator==( scoped_ptr const& ) const;
void operator!=( scoped_ptr const& ) const;
public:
typedef T element_type;
explicit scoped_ptr( T * p = 0 ): px( p ) // never throws
{
#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
boost::sp_scalar_constructor_hook( px );
#endif
}
boost中scoped_ptr的部分代碼:
private:
T * px;
scoped_ptr(scoped_ptr const &);
scoped_ptr & operator=(scoped_ptr const &);
typedef scoped_ptr<T> this_type;
void operator==( scoped_ptr const& ) const;
void operator!=( scoped_ptr const& ) const;
public:
typedef T element_type;
explicit scoped_ptr( T * p = 0 ): px( p ) // never throws
{
#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
boost::sp_scalar_constructor_hook( px );
#endif
}
class MyClass{
public:
MyClass();
private:
scoped_ptr<int> m_pScopedPtr;
}
MyClass::MyClass()
:m_pScopedPtr(new int(100))//這樣就可以了
{
}
public:
MyClass();
private:
scoped_ptr<int> m_pScopedPtr;
}
MyClass::MyClass()
:m_pScopedPtr(new int(100))//這樣就可以了
{
}
posted on 2011-07-25 13:46 Stone xin 閱讀(803) 評論(2) 編輯 收藏 引用 所屬分類: STL&&BOOST