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 マシンでクロスコンパイルしています。
私は何が欠けていますか?