类自我引用问题

时间:2012-03-05 18:05:49

标签: c++ class self-reference

我的所有代码都可以找到here

我正在尝试为项目创建一个复杂的树 但是这只是项目的开始(构建数据结构)。此外,我认为有必要知道数据结构可以是你想要的任何东西,而且我真的想这样做。如果你认为另一个更好,那就太棒了,但如果我不需要,我不想改变我的数据结构,因为我想跟随这个想法。

那就是说,我正在创造一棵树。

树的每个节点都包含一串内容,如果它是非终端的bool(如果它有子节点或者它是一个叶子)。

此外,每个节点都包含一个指向矢量的指针(让我们称之为矢量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];
        }
    }
}

但我无法弄清楚如何引用我目前正在定义的类的地址。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

你试过this指针吗?

答案 1 :(得分:2)

也许您可以轻松地将您的对象与'this'进行比较:

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

其中children [i] [j]是指向正在编写解构函数的类的实例的指针。