Преобразование в нескалярный тип с помощью умного указателя std c ++ 11

В настоящее время я играю с openscenegraph, и он использует свой собственный умный указатель. Но я хочу использовать умный указатель std c ++ 11.

теперь это рабочий пример кода

osg::ref_ptr<osg::Uniform> SineUniform   =  new osg::Uniform( "Sine", 0.0f );

но когда я делаю что-то подобное

std::unique_ptr<osg::Uniform> SineUniform   =  new osg::Uniform( "Sine", 0.0f );

Тогда я получаю следующее сообщение об ошибке

ошибка: преобразование из ‘osg :: Uniform *’ в нескалярный тип
запрошено ‘std :: unique_ptr’

Есть идеи, что происходит? Есть ли какие-то требования к умным указателям?

3

Решение

Вы должны сделать это:

std::unique_ptr<osg::Uniform> SineUniform(new osg::Uniform( "Sine", 0.0f ));

Также будьте осторожны, чтобы не смешивать разные типы умных указателей. OpenSceneGraph может делать предположения о том, как управляются его объекты, и может потребовать использования osg::ref_ptr вместо. Вы должны просмотреть документацию, чтобы выяснить это — я не могу помочь с этим, к сожалению.

6

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

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

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