В настоящее время я играю с 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’
Есть идеи, что происходит? Есть ли какие-то требования к умным указателям?
Вы должны сделать это:
std::unique_ptr<osg::Uniform> SineUniform(new osg::Uniform( "Sine", 0.0f ));
Также будьте осторожны, чтобы не смешивать разные типы умных указателей. OpenSceneGraph может делать предположения о том, как управляются его объекты, и может потребовать использования osg::ref_ptr
вместо. Вы должны просмотреть документацию, чтобы выяснить это — я не могу помочь с этим, к сожалению.
Других решений пока нет …