Boost Scoped Ptr - 声明与分配

时间:2013-07-30 04:36:16

标签: c++ boost scoped-ptr

以下代码正常运行:

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*)’

请帮我解决这个问题。

其他信息:clsA来自claX

1 个答案:

答案 0 :(得分:2)

代码:

pclObjA(new clsA());

不调用构造函数(并且scoped_ptr<>实例已经存在),但是尝试调用一个不存在的签名scoped_ptr<clsA>::operator()(clsaA*)的函数调用操作符。

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

pclObjA.reset(new clsA());