以下代码正常运行:
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
答案 0 :(得分:2)
代码:
pclObjA(new clsA());
不调用构造函数(并且scoped_ptr<>
实例已经存在),但是尝试调用一个不存在的签名scoped_ptr<clsA>::operator()(clsaA*)
的函数调用操作符。
使用boost::scoped_ptr<T>::reset(T*)
在构造后分配动态分配的对象:
pclObjA.reset(new clsA());