将地址分配给struct内的指针

时间:2017-11-11 20:17:14

标签: c++ pointers vector struct

我正在尝试实现路径寻找算法。 所以我有一个带有结构的二维数组,并且想跟随它 追踪从一个地方到另一个地方的最佳意见。因此,我尝试使用结构(简单的数据处理)和指向其他结构的指针。

原则上这是它的工作原理。

struct location{
   int x;
   int y;
   location* parent;
};    

int main(){
   map_inf current;
   vector<map_inf> allData;
   someData = getData();    // returns vector of structs
   current = someData[0];      

   while(current.x != 15 && current.y != 30){
       for(int i = 1; i < someData.size(); i++){
            someData[i].parent = &current;
            allData.push_back(someData[i]);
       }
       someData = getData(); // get new data
       current = someData[0];
   }
  for(int i=0; i<allData.size(); i++){
     ///////////////////////////////////////
     // ALL PARENT POINTERS ARE EQUAL. WHY ?
     ///////////////////////////////////////
  }
}

当我使用调试器查看我的代码时,我可以看到“当前”元素是正确的,指针将被正确设置。但是当“someData”被完全处理并且有新数据时,allData中的所有先前父指针也会得到更新。

1 个答案:

答案 0 :(得分:0)

你应该在for循环结束后或for循环中增加/更新当前指针。您刚刚在for循环结束时使用了 current = someData [0]; ,这意味着当前将包含 someData [0] <指向的相同指针/强>