[英]How to modify pointer reference to struct member variable
I want to create BST in C++.我想在 C++ 中创建 BST。 When I try to assign pointer to new node - it does not change.
当我尝试将指针分配给新节点时 - 它不会改变。 After fucntion call it still have random value.
函数调用后它仍然具有随机值。 Is it possible to do it my way?
可以按照我的方式去做吗?
struct wezel {
int value;
wezel *l_val;
wezel *r_val;
wezel(int aValue) {
value = aValue;
l_val = NULL;
r_val = NULL;
}
};
struct tree {
wezel *root;
tree(wezel *aNode) {
root = aNode;
}
};
void addNode(int aValue, wezel aNode) {
if(aValue < aNode.value) {
if(aNode.l_val == NULL) {
wezel pt = wezel(aValue);
wezel *point = &pt;
aNode.l_val = point; //do not work
} else {
return addNode(aValue, *aNode.l_val);
}
} else if(aValue > aNode.value) {
if(aNode.r_val == NULL) {
wezel pt = wezel(aValue);
wezel *point = &pt;
aNode.r_val = point; //do not work
} else {
return addNode(aValue, *aNode.r_val);
}
}
}; };
wezel pt = wezel(aValue);
wezel *point = &pt;
aNode.l_val = point;
Here you are creating a pt object of type wezel, which will get destroyed once it goes out of the scope, while the pointers 'point' and aNode.l_val still pointing to its address.在这里,您正在创建一个 wezel 类型的 pt object,一旦它离开 scope,它将被销毁,而指针 'point' 和 aNode.l_val 仍然指向它的地址。 (By the way 'point' will also get destroyed upon leaving the scope.)
(顺便说一句,离开 scope 时,“点”也会被破坏。)
Instead, you are supposed to create a new object, linked to aNode.l_val like this:相反,您应该创建一个新的 object,链接到 aNode.l_val,如下所示:
aNode.l_val = new wezel(aValue);
And don't forget to properly dispose your nodes with the respective 'delete' statements.并且不要忘记使用相应的“删除”语句正确处理您的节点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.