C ++在Stack上创建指向对象(节点)的指针数组

时间:2018-02-19 22:06:09

标签: c++ arrays pointers

我试图将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的独立类。

1 个答案:

答案 0 :(得分:-1)

_nodes[i] = &node;

该行存储指向本地对象的指针。一旦函数返回,指针就会在对象被破坏时指向无效的内存位置。

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