使用 boost::scoped_ptr
或boost::shared_ptr
时出现错误
1>*\algomanager.cpp(28):错误 C2064:项的计算结果不是 函数采用 1 个参数
我有这样的代码。 。 。
class X{
boost::shared_ptr<cPreFilterProcess> preProcess;
public:
X(){
preProcess(new cPreFilterProcess(pars));
}
};
我错过了什么?谢谢。
我的魔法调试的神话玻璃球告诉我你正在做这样的事情:
class X{
boost::shared_ptr<cPreFilterProcess> preProcess;
public:
X(){
preProcess(new cPreFilterProcess(pars));
}
};
您需要使用成员初始值设定项,如下所示:
X() : preProcess(...){}
或者使用.reset
因为你不能像这样分配一个指针:
X() { preProcess.reset(...); }
不过,我强烈建议使用第一种选择。
如果你只是把它写成一个语句:
preProcess ( new cPreFilterProcess(pars) );
这是无效的,因为preProcess
已经构造好了,因此语法试图像函数一样"调用"它。
这也无效:
preProcess = new cPreFilterProcess(pars);
因为无法将cPreFilterProcess*
分配给shared_ptr<cPreFilterProcess>
也许你的意思是:
preProcess.reset( new cPreFilterProcess(pars) );
或
preProcess = boost::shared_ptr<cPreFilterProcess>( new cPreFilterProcess(pars) );