boost::shared_ptr
これは、左右のノードとルートに使用する正しい方法ですかboost::weak_ptr
。私は共有がやり過ぎであることを知っています。これは後で必要になります。
クラス ノード、2 人の息子が ptr を共有
class Node
{
public:
boost::shared_ptr<Node> left;
boost::shared_ptr<Node> rigth;
int nVal;
Node();
Node(int);
~Node();
Node getVal(void);
void setVal(int);
};
Node::Node()
{
cout << "creating node empty" << endl;
nVal = 0;
left.reset();
rigth.reset();
}
Node::~Node()
{
cout << "entering destructor" << endl;
}
Node::Node(int n)
{
cout << "creating node with value" << endl;
nVal = n;
left.reset();
rigth.reset();
}
Node Node::getVal(void)
{
cout << "returning value" << endl;
return this;
}
void Node::setVal(int n)
{
cout << "setting value" << endl;
nVal = n;
}
クラスツリー、弱いptr
class Tree
{
public:
boost::weak_ptr<Node> root;
Tree();
~Tree();
void findParent(int n, int &found, Node &parent);
void add(int n);
void post(boost::weak_ptr<Node> q);
void del(int n);
};
Tree::Tree()
{
root = NULL;
}