2011-03-03 126 views
2

我正在嘗試製作一個樹模板,每個節點上可以有任意數量的子節點。這是我在節點類中的addChild功能碼 -雙指針問題

template<typename T> 
void Tree<T>::Node::addChild(T& value) { 
    Node* temp = new Node(value, this); //second parameter is for parent 
    numOfChildren++; 
    children*[numOfChildren] = temp; 
} 

而不必對左,右子指針的,我想我應該做一個雙指針(指向節點*數組)。

節點**子女;

我不斷收到「預期的主要表達式'['token'錯誤之前。我想我正在訪問二維數組呢?或者,也許我應該以一種不同的方式去做?如果我剛生下孩子,你認爲它會起作用嗎?

節點*孩子 ?

我覺得它可能工作,如果我只有一個節點*,每個元素是不同的節點。

任何幫助表示讚賞。

+0

您正在創建* B-Tree *。見http://en.wikipedia.org/wiki/B-tree。您可能想要搜索網絡上的現有示例。還搜索「平衡B樹」。 – 2011-03-03 20:10:00

+0

我猜你想要做的是(* children)[numOfChildren](然而,如果你想要分析一個Note *,你就不能解除引用,Erik的解決方案就是要走的路線 – Philipp 2011-03-04 05:53:47

回答

6

只需使用children[numOfChildren]。或者以正確的方式與std::vector<Node *> children;

+0

哦,當然,我忘了所有關於使用std :: vector。謝謝! – Sterling 2011-03-03 18:36:01

+0

但是,當我做std :: vector :: Node *> children時,我得到一個錯誤,說錯誤:模板參數列表中參數1的類型/值不匹配, class _Tp,class _Alloc> class std :: vector' – Sterling 2011-03-03 18:44:39

+0

'std :: vector '應該可以在'Tree'或'Node'內正常工作,不需要'Tree :: Node'。 – Erik 2011-03-03 18:47:48