简体   繁体   English

如何修改对结构成员变量的指针引用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM