我試圖創建一個複雜的樹狀一個項目然而,這是該項目(數據結構的建設)的僅僅是個開始。另外,我認爲這將有助於瞭解數據結構可以是任何你想要的,而且我真的想這樣做。如果你認爲另一個更好,那很隆重,但是如果我不需要,我不想改變我的數據結構,因爲我想遵循這個想法。
這就是說,我正在創建一棵樹。
樹的每個節點都包含一個內容字符串,如果它是非終端(如果它有子節點或者它是葉節點),則爲bool。另外,每個節點都包含一個指向vector的指針(讓我們稱之爲vector v)。
V是這樣的,它包含其他向量。讓我們調用其中一個向量X.
X包含一個指向節點的指針。
除了當X包含一個指向包含V的節點的指針時(如果有意義的話),代碼工作正常。當X包含一個指向包含V的節點的指針時,我得到一個終止於seg故障的無限循環。
我已經哈希這一點了一個小時,我敢肯定問題出在我的解構,它看起來像這樣:
Node :: ~Node() {
for (int i = 0; i < (*children).size(); i++) {
for (int j = 0; j < (*children)[i].size(); j++) {
if ((*children)[i][j] != selfP) {
delete (*children)[i][j];
}
}
}
}
我想要做的是這樣的:
for (int i = 0; i < (*children).size(); i++) {
for (int j = 0; j < (*children)[i].size(); j++) {
if ((*children)[i][j] != CURRENT_NODE_ADDRESS) {
delete (*children)[i][j];
}
}
}
但我不明白如何引用我目前定義的類的地址。有什麼想法嗎?
您是否試過[this](http://en.wikipedia.org/wiki/This_(computer_programming))(鏈接)指針? – smhx 2012-03-05 18:09:00
這不是'孩子的地址嗎?或者它會是節點? – 2012-03-05 18:11:42
'children'通過Node.cpp中的'addLeaves'填充(請參閱問題頂部的pastebin)。 – 2012-03-05 18:12:12