课堂自我参考问题

Class Self-Reference Issues

本文关键字:问题 参考 自我 课堂      更新时间:2023-10-16

我的所有代码都可以在这里找到。

我试图为一个项目创建一个复杂的树,但这只是项目(数据结构的构建)的开始。此外,我认为知道数据结构可以是你想要的任何东西都会有所帮助,我真的很想这样做。如果你认为另一个更好,那就太好了,但如果不必要的话,我不想改变我的数据结构,因为我想贯彻这个想法。

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

树的每个节点都包含一个内容字符串,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];
        }
    }
}

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

你试过这个指针吗?

也许你可以很容易地将你的对象与"this"进行比较:

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

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