繁体   English   中英

C++ 在堆栈上制作一个指向对象(节点)的指针数组

[英]C++ Making an array of pointers to objects(nodes) on Stack

我试图将 addEdge() 添加到我的节点,我注意到当我尝试访问 _nodes 数组上的“节点”时,它没有保留构造的值,例如像 id。 它被假设为 1,它正在打印 4198441。这是初始化数组的正确方法,以便它的每个位置都指向一个特定的节点吗? (我不能使用“new”关键字,也不能使用“list”和“vector”库。)

这就是我创建指向节点的指针数组的方式。 假设数组 _nodes[x] 的每个位置都是一个指向节点的指针。

  //array
  Node* _nodes[];

  //Constructor
  for(int i=0;i<N;i++){
    Node node(i);          //i is the id of the future node.
    _nodes[i] = &node;
  }   



   void addEdge(int a,int b){
    std::cout<<"The id of the node stored in a is:" << _nodes[a]->getId();

    ...
}

这段代码属于一个名为 Graph 的独立类。

_nodes[i] = &node;

这一行存储了一个指向本地对象的指针。 一旦您的函数返回,当对象被销毁时,指针就会指向无效的内存位置。

你可以使用_nodes[i] = new Node(i); (并删除本地对象)但是一旦完成,您就必须管理该内存并将其删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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