0

boost::shared_ptr当它是类的成员变量时,我在初始化 a 时遇到问题。我看到了这个以前的问题:

如何初始化作为类成员的 shared_ptr?

但是我仍然有一个编译器错误。快速示例代码:

class A
{
    public:
      A();
};

class B
{
    public:
       B();
    private:
        boost::shared_ptr<A> mA;

        foo() {

           // the line below generates a compiler error
           mA(new A());       // ERROR

           // below will work....
           boost::shared_ptr<A> tmp(new A());    //OK
           mA = tmp;

        }
 };

编译器抱怨: error: no match for call to "(boost::shared_ptr<A>) (A*)"

但是创建一个 tmpshared_ptr然后将其分配给mA编译很好。我正在为 Intel Edison 的 Ubuntu 14.04 机器上进行交叉编译。

我错过了什么?

4

1 回答 1

2

你正在寻找mA.reset(new A());

共享指针现在也是标准的一部分,所以你应该使用std::shared_ptr

于 2015-04-10T20:42:14.857 回答