在使用C++内置的raw pointer时经常会因为内存引用或delete等原因造成segment fault一类的问题,这类问题解决起来是非常繁琐而头疼的。因此C++库提供了smart pointer来替代程序员们管理内存和指针等问题,本文主要介绍其中的shared pointer的使用方法。
参考:http://wiki.inkscape.org/wiki/index.php/Boost_shared_pointers
。。。
#include <boost/shared_ptr.hpp>
using namespace boost;
template <class T>
class Node{
public:
Node(int splitLevel);
// shared_ptr<Node<T> >代替raw pointer中的Node<T> *
Node(shared_ptr<Node<T> > lc, shared_ptr<Node<T> > rc, shared_ptr<Node<T> > parent, int splitLevel);
int getSplitLevel() { return this->splitLevel; }
。。。
private:
int splitLevel;
shared_ptr<Node<T> > lc, rc, parent;
};
template <class T>
Node<T>::Node(int splitLevel, Element<T> e, Hyper<T> h){
this->splitLevel = splitLevel;
//将lc赋值为shared_ptr<Node<T> >(),即为赋值为NULL
//判断其是否为NULL时,使用表达式“lc == shared_ptr<Node<T> >()”即可
//欲获取lc的splitLevel值时,使用语句“lc->getSplitLevel() ”即可
this->lc = shared_ptr<Node<T> >();
this->rc = shared_ptr<Node<T> >();
this->parent = shared_ptr<Node<T> >();
}
。。。