1

下面的代码工作正常:

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

4

1 回答 1

2

编码:

pclObjA(new clsA());

不调用构造函数(并且scoped_ptr<>实例已经存在),但试图调用具有scoped_ptr<clsA>::operator()(clsaA*)不存在签名的函数调用运算符。

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

pclObjA.reset(new clsA());
于 2013-07-30T08:44:16.497 回答