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