繁体   English   中英

boost shared_ptr初始化为类成员

[英]boost shared_ptr initialize as class member

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

如何初始化作为类成员的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*)"

但是,创建一个tmp shared_ptr ,然后将其分配给mA编译。 我在Ubuntu 14.04机器上针对Intel Edison进行交叉编译。

我想念什么?

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

另外,共享指针现在已成为标准的一部分,因此您应该使用std::shared_ptr

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM