У меня проблема с инициализацией 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*)"
Однако создание ТМП shared_ptr
а затем назначив его mA
компилируется нормально. Я кросс-компиляции на машине Ubuntu 14.04 для Intel Edison.
Что мне не хватает?
Ты ищешь mA.reset(new A());
Также совместно используемый указатель является частью стандарта, поэтому вы должны использовать std::shared_ptr