Повышение объема Ptr — декларация против распределения

Приведенный ниже код работает нормально:

scoped_ptr<clsA> pclObjA(new clsA());

Но нижеприведенные заявления не работают:

scoped_ptr<clsA> pclObjA;

// some statements

pclObjA(new clsA());

Я получаю ошибку компиляции, как показано ниже:

error: no match for call to ‘(boost::scoped_ptr<clsA>) (clsA*)’

Пожалуйста, помогите мне решить эту проблему.

Дополнительная информация: clsA происходит от claX

1

Решение

Код:

pclObjA(new clsA());

не вызывает конструктор (и scoped_ptr<> в любом случае экземпляр уже существует), но пытается вызвать оператор вызова функции с подписью scoped_ptr<clsA>::operator()(clsaA*) который не существует.

использование boost::scoped_ptr<T>::reset(T*) назначить динамически размещенный объект после построения:

pclObjA.reset(new clsA());
2

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

Других решений пока нет …

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