簡體   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