简单的提升智能指针语法问题

lea*_*vst 0 c++ boost smart-pointers shared-ptr

使用任何一个boost::scoped_ptrboost::shared_ptr我得到错误

1> *\algomanager.cpp(28):错误C2064:term不计算为带1个参数的函数

我有这样的代码...

class X{
  boost::shared_ptr<cPreFilterProcess> preProcess;
public:
  X(){
    preProcess(new cPreFilterProcess(pars));
  }
};
Run Code Online (Sandbox Code Playgroud)

我错过了什么?谢谢.

Xeo*_*Xeo 6

我神秘的玻璃魔法调试告诉我你做的是这样的:

class X{
  boost::shared_ptr<cPreFilterProcess> preProcess;
public:
  X(){
    preProcess(new cPreFilterProcess(pars));
  }
};
Run Code Online (Sandbox Code Playgroud)

您需要使用成员初始值设定项,如:

X() : preProcess(...){}
Run Code Online (Sandbox Code Playgroud)

或者使用,.reset因为你不能只指定一个像这样的指针:

X() { preProcess.reset(...); }
Run Code Online (Sandbox Code Playgroud)

我强烈推荐第一个选项.