我創建了一個樹結點物件, 它下面可以鏈接多個結點物件, 形成一個樹.
大概會像這樣使用它:
Node* root = new Node(index, jv);
for (int i = 0; i < 3; i++)
Node* childLv1 = new Node(i, jv);
root->addChild(childLv1);
for (int j = 0; j < 2; j++)
Node* childLv2 = new Node(j, jv);
childLv1->addChild(childLv2);
delete root;
// .h
class Node
{
public:
Node(int, json::value);
~Node();
int childCount();
Node* child(int index);
void addChild(Node*);
void setParam(int index, double value);
double getParam(int index);
NODE_TYPE nodeType;
int index;
json::value conf;
private:
std::vector<Node*> _children;
std::vector<double> _params;
}
// .cpp
Node::~Node()
{
for(int i = 0; i < childCount(); i++)
delete child(i);
}
當我洗掉一個結點時, 我想同時銷毀它下面的所有子結點
我這個解構式寫的對不對 ??
uj5u.com熱心網友回復:
大致如此寫一個clear函式
void clear(Node*& x){
if(x==nullptr)
return;
for(int i=0;i<childCount();i++){
clear(child(i);
}
x=nullptr;
}
~Node(){
for( ...)
clear(child(i);
uj5u.com熱心網友回復:
沒啥問題,你也可以用一個全域方法,把根傳進去遞回刪轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/245898.html
標籤:C++ 語言
上一篇:請教下VS里面亂碼問題
下一篇:求大神幫我的作業題,謝謝了
