Приведенный ниже код работает нормально:
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
Код:
pclObjA(new clsA());
не вызывает конструктор (и scoped_ptr<>
в любом случае экземпляр уже существует), но пытается вызвать оператор вызова функции с подписью scoped_ptr<clsA>::operator()(clsaA*)
который не существует.
использование boost::scoped_ptr<T>::reset(T*)
назначить динамически размещенный объект после построения:
pclObjA.reset(new clsA());
Других решений пока нет …