我有一个名为Node的类(它是一个树节点)。它有以下字段:
string strValue
,Node* parent
,vector<Node*> children
节点构造函数将字符串作为参数,从中提取第一个单词,如果字符串的其余部分不为空,则会创建一个执行相同操作的子节点。
树中的第一个节点初始化如下:
root = Node(NULL, myString);
节点构造函数:
Node(Node* parent, string str)
{
this->parent = parent;
strValue = extractWord(str);
if (str.length() > 0) {
children.insert(children.end(), new Node(this, str);
}
}
以上是一个简化版本,但它应该能够很好地了解它应该如何运作。
我的问题是我无法访问父亲的值。所有Node字段都设置为public。当我运行使用此特定操作的代码:parent->strValue
时,程序崩溃,没有错误消息或任何类似的操作。例如:
if (parent == nullptr)
return "Parent: NULL";
else
return "Parent: " + parent->strValue;
如果我改用这样的东西:
if (parent == nullptr)
return "Parent: NULL";
else
return "Parent: NOT NULL";
我没有任何问题地执行。
我需要解决这个问题,但我想出了可能导致问题的想法。