c++ - 简单的 boost 智能指针语法问题

标签 c++ boost shared-ptr smart-pointers

当使用 boost::scoped_ptrboost::shared_ptr 时出现错误

1>*\algomanager.cpp(28) : error C2064: term does not evaluate to a function taking 1 arguments

我有这样的代码。 . .

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(...); }

不过我强烈推荐第一个选项。

关于c++ - 简单的 boost 智能指针语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10473152/

相关文章:

C++11 如何在 std::unordered_map 中存储指向方法的指针?

c++ - 具有连续存储的动态矩阵

C++ 重载基于 shared_ptr 派生类的函数

c++ - 在基类中有一个方法可以分配给子类

c++ - 意外 token 换行符附近的 qmake 语法错误

c++ - 为什么在同一声明区域内的同名声明被拒绝?

c++ - 使用 MXE 在 Linux for Windows 上交叉编译 - GSL 链接?

c++ - 传递文件或标准输入以模糊地 boost 进程子进程

c++11 shared_ptr + Boost::序列化

c++ - 求以 10 为底的 double 的指数和尾数