下面的代码工作正常:

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/

10-11 16:24