3

我目前正在玩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”

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

4

1 回答 1

6

你应该做这个:

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

另外,注意不要混合不同类型的智能指针。OpenSceneGraph 可能会对其对象的管理方式做出假设,并且可能需要使用它osg::ref_ptr来代替。您应该阅读文档以找出答案 - 不幸的是,我对此无能为力。

于 2013-05-03T17:35:30.920 回答