我有一個對象(類型單元格)存儲指向其他對象相同類型(網格上的鄰居)的指針列表。我可以在函數中傳遞一個指向自己的指針嗎?
這是一個2D網格..作爲視覺,見下圖:
xxc
xcc
ccx
的「C」,在市中心將是一個活的細胞,且具有向東北,華東,華南和它的西南部。它的鄰居列表會有指向這些單元的指針,然後是其他方向的空指針。它看起來像這樣: neighbors = {null,pointer,pointer,null,pointer,null,pointer,null) (列表的順序是North,East,South,West,NorthEast,SouthEast,SouthWest,NorthWest)。
如果一個新的小區中移動到其鄰近的位置,例如移動到該小區的西側,它現在應該是這樣的:
xxc
ccc
ccx
我需要更新的鄰居列表,所以它現在有一個指向它的西方細胞,然後西方細胞需要更新所有的鄰居說「你好!我在這裏!你現在有我作爲鄰居」。所以西方的細胞會通過它自己的指針列表,每個人都說「用ME作爲你的鄰居更新你的列表」。我試圖傳遞「我」指針作爲指向它自己的指針。這裏是代碼..
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 [數字],你需要把這個指針,我在你的鄰居列表」。我不知道如何傳遞給我自己的指針。
有什麼想法?對不起,這是如此令人困惑......
肯定。但它是'this',而不是'&this'。 – paulsm4
對這樣簡單的問題太多解釋!用一些最小的樣品擊中指甲。 –
哦,我的天啊,你是對的。我無法在網上找到它,所以我認爲這是一些狂野的事情,人們不知道我的意思......謝謝paulsm4 – jcam77