Весь мой код можно найти здесь .
Я пытаюсь создать сложное дерево для проекта , однако этоэто только начало проекта (построение структуры данных).Кроме того, я думаю, что было бы полезно знать, что структура данных может быть любой, что вы хотите, и что я действительно хочу сделать это таким образом.Если вы думаете, что другой лучше, это замечательно, но я не хочу менять свою структуру данных, если мне это не нужно, поскольку я хотел бы довести эту идею до конца.
Тем не менее, ясоздаю дерево.
Каждый узел дерева содержит строку содержимого, bool of, если он не является терминальным (если у него есть дочерние элементы или если это лист).
Кроме того, каждый узел содержит указатель на вектор (назовем этот вектор v).
V таков, что содержит другие векторы.Давайте назовем один из этих векторов X.
X содержит указатель на узел.
Код работает нормально, за исключением случаев, когда X содержит указатель на узел, содержащий V (если это имеет смысл).Когда X содержит указатель на узел, который содержит V, я получаю бесконечный цикл, который завершается ошибкой сегмента.
Я хеширую это в течение часа, и я почти уверен, что проблема в моем деконструкторе, который выглядит так:
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];
}
}
}
Но я не могу понять, как ссылаться на адрес классаЯ в настоящее время определяю.Есть мысли?