关于boost::shared_ptr只能指针的转换
先描述一下背景:
View的构造函数1:(在做操作一的时候调用构造函数1)
View::View(Doc& rDocument, Window *pWindow,const SwViewOption *pNewOpt, OutputDevice *pOutput,long nFlags )
pLayout( 0 )在这里初始化,pLayout( 0 )为View的成员,类型为 Frame *pLayout(Frame为另外一个类)
void View::Init( const ViewOption *pNewOpt )
在此函数中对pLayout进行new操作
pLayout = new Frame( pDoc->GetDfltFrmFmt(), this );
操作完成后,文档中的这个View就有了它的pLayout。
View的构造函数2:(在做操作二的时候调用构造函数2)
View::View( View& rShell, Window *pWindow,
OutputDevice *pOutput, long nFlags ) :
此时的pLayout为0;初始化,又构造一个View(这个View是做了操作二后产生的临时的View)
void View::Init( const SwViewOption *pNewOpt )
在此函数中对pLayout进行new操作
pLayout = new Frame( pDoc->GetDfltFrmFmt(), this );
操作完成后,文档中的这个临时的View就有了它的pLayout。
执行操作三:析构
析构的时候:
View::~View()
在析构里执行delete pLayout; 析构了它自己的pLayout
问题是:对于pLayout = new Frame( pDoc->GetDfltFrmFmt(), this );这个语句,产生的pLayout 是同一个pLayout ,也就是说,对于一个View和一个临时的View来说,两个pLayout 是一样的。因此,现在要使用boost::shared_ptr这种智能指针来转换这个pLayout ,使其变成一个共享的引用指针来指向同一个pLayout 而避免初始化出两个一样的pLayout 。
各位大侠,小弟看了不少boost::shared_ptr的相关文章,可惜没学会怎么用。请指点啊