3

私は現在openscenegraphで遊んでおり、独自のスマートポインターを使用しています。しかし、標準の 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 に答える