OSG定义了智能指针模板类ref_ptr<>。
osg命名空间的Referenced类实现了对内存区段的引用计数器功能。
所有的osg节点和场景图形数据,均派生自Referenced类。
ref_ptr<>用于实现一个指向Referenced对象的智能指针。
#include <Geode>
#include <Group>
#include <ref_ptr>
main ()
{
osg::ref_ptr<Geode> geode = new osg::Geode;
}
调试看到的如下;
先初步了解一下;
对比C++智能指针看一下;
osg的智能指针的一些定义例子,
osg::ref_ptr<osg::MatrixTransform> mt = new osg::MatrixTransform;
osg::ref_ptr<osg::Group> root = new osg::Group();
osg::ref_ptr<osg::Node> node = osgDB::readNodeFile("cow.osg");
osg的智能指针可以指向不同类型的OSG类型的对象,应该都是OSG的节点(Node),我记得不是很清楚;
C++的智能指针的一些例子,
std::shared_ptr<int> p1(new int(99099));
std::shared_ptr<std::string> ss(new std::string("AAABBB"));
C++的智能指针是可以指向不同的数据类型对象,可以是int、double或string;