Boost Scoped Ptr-声明与分配

Boost Scoped Ptr - Declaration vs Allocation

本文关键字:分配 声明 Ptr- Scoped Boost      更新时间:2023-10-16

以下代码运行良好:

scoped_ptr<clsA> pclObjA(new clsA());

但以下声明不起作用:

scoped_ptr<clsA> pclObjA;
// some statements
pclObjA(new clsA());

我得到如下编译错误:

error: no match for call to ‘(boost::scoped_ptr<clsA>) (clsA*)’

请帮我解决这个问题。

附加信息:源自claXclsA

代码:

pclObjA(new clsA());

不调用构造函数(而且scoped_ptr<>实例已经存在),但正在尝试调用签名为scoped_ptr<clsA>::operator()(clsaA*)的函数调用运算符,但该运算符不存在。

使用boost::scoped_ptr<T>::reset(T*)在构造后分配动态分配的对象:

pclObjA.reset(new clsA());