传递指针以更改其值但保持静止
我正在使用Allegro库开发C ++。
有draw_tiles函数。
void draw_tiles(def_small_world * s_world,BITMAP * dest){
BITMAP *TileMap=NULL;
loadTilemap(s_world->tilemap,TileMap);
for(int y = 0;y<SIGHTY*2+1;y++)
{
for(int x = 0;x<SIGHTX*2+1;x++)
{
pasteTile(s_world->tile[y][x].kind,TileMap,dest,x,y);
}
}
}
和loadTilemap函数。
void loadTilemap(int i,BITMAP * tileLayer){
char c[128];
sprintf(c,TILEPATHFORMAT,i);
tileLayer= load_bitmap(c,NULL);
}
我预计
以下代码将TileMap更改为指向某处的位置
loadTilemap(s_world->tilemap,TileMap);
但是在loadTilemap之后,TileMap变量保持不变。
以下代码效果很好
char c[128];
sprintf(c,TILEPATHFORMAT,i);
tileLayer= load_bitmap(c,NULL);
tileLayer点数0x003f93f8
如何将我的代码固定到TileMap点的load_bitmap返回值?
最佳答案
您正在按值传递指针,因此将创建指针的副本。在loadTilemap
中,您正在为指针的副本分配一个新值-但这不会影响原始指针。
尝试通过将loadTilemap
函数签名更改为此来通过引用传递指针:
void loadTilemap(int i,BITMAP *& tileLayer);