我目前正在使用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 );

然后我得到以下错误信息



知道发生了什么吗?对智能指针有一些要求吗?

最佳答案

你应该做这个:

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

另外,请注意不要混合使用不同类型的智能指针。 OpenSceneGraph可能会假设如何管理其对象,并且可能需要使用osg::ref_ptr来代替。您应该仔细阅读文档才能找到答案-不幸的是,我无法帮助您。

10-08 03:37