我可以在函数中传递指向自己的指针吗?
Can I pass a pointer to myself in a function?
我有一个对象(Cell类型),它存储指向相同类型的其他对象的指针列表(网格上的邻居)。
这是一个2D网格..作为视觉对象,见下文:
xxc
xcc
ccx
正中心的"c"将是一个活细胞,它必须在它的东北、东、南和西南。它的邻居列表将具有指向这些单元格的指针,然后是指向其他方向的 Null 指针。它看起来像这样:邻居 = {空, 指针, 指针, 空, 指针, 空, 指针, 空)(列表的顺序是北、东、南、西、东北、东南、西南、西北)。
如果一个新像元移动到其相邻位置,例如移动到该像元的西部,它现在将如下所示:
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);
}
}
}
所以我试图调用 updateNeighbor 函数并说"在位置 x [数字],你需要把这个指向我的指针放在你的邻居列表中"。不过,我不确定如何将指针传递给自己。
有什么想法吗?对不起,这太令人困惑了...
this
是一个指针,而不是一个引用。 所以这个(没有双关语)代码:
Cell * temp = &this;
应该是:
Cell * temp = this;
除此之外,您根本不需要temp
,似乎:
if (neighbours[i] != NULL) {
if (i==0)
neighbours[i]->updatedNeighbour(2, this);
else if(i==1)
neighbours[i]->updatedNeighbour(3, this);
// etc...
相关文章:
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- 派生类是从基类继承 v 指针并仅使用它,还是也有自己的 v 指针?
- 数组由其类自己的指针指向的大小是多少?
- 如何将自己的智能指针传递到功能
- 函数可以将指针返回其自己的类型
- 我创建了自己的智能指针类,我用这个智能指针指向一个类实例,如何正确返回智能指针
- 智能指针的自我/自己的实现
- 张量类,它有自己的存储,但也可以映射外部指针
- 为自己的智能指针专门化模板
- 从我自己的类类型的指针数组中删除记录
- 为什么我的指针在 main 中取消引用后具有不同的值,而不是在我自己的自定义函数中取消引用它时?
- 我可以在函数中传递指向自己的指针吗?
- 在元素自己的析构函数中擦除指向静态向量中元素的指针
- 如何在C++中实现自己的线程安全共享指针
- 我应该为地图中的两个智能指针对制作自己的比较器吗?
- 使用指针创建自己的"charcopy"函数
- 如何声明为属性,指针到自己的类型,使用模板
- 我自己的智能指针,双重自由或腐败(fasttop)
- c++,自己实现的唯一的用于排序向量的指针
- vector std::out_of_range 在我自己的模板类中(指向列表节点的指针向量),但我不明白为什么