我有一个对象(单元格类型),它存储指向相同类型的其他对象的指针列表(网格上它的邻居)。
这是一个 2D 网格.. 作为视觉效果,见下文:
xxc
xcc
ccx
最中心的“c”将是一个活细胞,它位于它的东北、东、南和西南。它的邻居列表将具有指向这些单元格的指针,然后指向其他方向的 Null 指针。它看起来像这样:neighbors = {null,pointer,pointer,null,pointer,null,pointer,null)(列表的顺序是 North,East,South,West,NorthEast,SouthEast,SouthWest,NorthWest)。
如果一个新的单元格移动到它的相邻位置,例如移动到这个单元格的西边,它现在看起来像这样:
xxc
ccc
ccx
我需要更新邻居列表,所以它现在有一个指向其西方单元格的指针,然后西方单元格需要更新它的所有邻居说“你好!我在这里!你现在有我作为邻居”。所以西方细胞会检查它自己的指针列表,并在每个指针上说“更新你的列表,将我作为你的邻居”。我试图将“我”指针作为指向自身的指针传递。这是代码..
int Cell::updateAllNeighbours(){
//Need a pointer to myself...
Cell * temp = &this; //how do I do this???
for (int i=0; i<NUM_NEIGHBOURS; i++){
if (neighbours[i] != NULL) {
if (i==0)
neighbours[i]->updatedNeighbour(2, temp);
else if(i==1)
neighbours[i]->updatedNeighbour(3, temp);
else if(i==2)
neighbours[i]->updatedNeighbour(0, temp);
else if(i==3)
neighbours[i]->updatedNeighbour(1, temp);
else if(i==4)
neighbours[i]->updatedNeighbour(6, temp);
else if(i==5)
neighbours[i]->updatedNeighbour(7, temp);
else if(i==6)
neighbours[i]->updatedNeighbour(4, temp);
else if(i==7)
neighbours[i]->updatedNeighbour(5, temp);
}
}
}
所以我试图调用 updatedNeighbour 函数并说“在位置 x [数字],你需要把这个指向我的指针放在你的邻居列表中”。我不确定如何将指针传递给自己。
有什么想法吗?抱歉,这太混乱了……