увеличить shared_ptr инициализировать как член класса

У меня проблема с инициализацией 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.

Что мне не хватает?

0

Решение

Ты ищешь mA.reset(new A());

Также совместно используемый указатель является частью стандарта, поэтому вы должны использовать std::shared_ptr

1

Другие решения


По вопросам рекламы [email protected]