下面的代码工作正常:
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
最佳答案
编码:
pclObjA(new clsA());
不会调用构造函数(而且
scoped_ptr<>
实例已经存在),但是正在尝试使用签名scoped_ptr<clsA>::operator()(clsaA*)
不存在的函数调用运算符。构造后,使用
boost::scoped_ptr<T>::reset(T*)
分配动态分配的对象:pclObjA.reset(new clsA());
关于c++ - boost 范围的Ptr-声明与分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17938399/