Самостоятельная ссылка на класс - PullRequest
1 голос
/ 05 марта 2012

Весь мой код можно найти здесь .

Я пытаюсь создать сложное дерево для проекта , однако этоэто только начало проекта (построение структуры данных).Кроме того, я думаю, что было бы полезно знать, что структура данных может быть любой, что вы хотите, и что я действительно хочу сделать это таким образом.Если вы думаете, что другой лучше, это замечательно, но я не хочу менять свою структуру данных, если мне это не нужно, поскольку я хотел бы довести эту идею до конца.

Тем не менее, ясоздаю дерево.

Каждый узел дерева содержит строку содержимого, 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];
        }
    }
}

Но я не могу понять, как ссылаться на адрес классаЯ в настоящее время определяю.Есть мысли?

Ответы [ 2 ]

2 голосов
/ 05 марта 2012

может быть, вы можете легко сравнить ваш объект с 'this':

if (children[i][j] == this)
{
...
}

, где children [i] [j] - указатель на экземпляр класса, который вы пишете деконструктору.

2 голосов
/ 05 марта 2012

вы пробовали указатель this ?

...