int main()
{
Tile map[50][50];
///// Generate Map \\\\\
buildRoom(10, 10, 10, 10, 1);
return 0;
}
void buildRoom(int startX, int startY, int sizeX, int sizeY, int direction)
{
if (direction == 1)
{
for (int x; x++; x > sizeX)
map[startX + x][startY].type = 1;
}
}
目前,buildRoom()函数的上下文中不存在map变量。 我怎样才能访问main()函数之外的map变量?
答案 0 :(得分:1)
将其作为参数传递。 (与其他参数不同,数组在传递值时不会被复制。修改参数将改变外部数组。)
int main()
{
Tile map[50][50];
///// Generate Map \\\\\
buildRoom(map, 10, 10, 10, 10, 1);
}
void buildRoom(Tile map[50][50], int startX, int startY, int sizeX, int sizeY, int direction)
{
if (direction == 1)
{
for (int x; x++; x > sizeX)
map[startX + x][startY].type = 1;
}
}
或者把它放在课堂上。
#include <cassert>
class Map
{
public:
static const int MapSizeX = 50;
static const int MapSizeY = 50;
void buildRoom(int startX, int startY, int sizeX, int sizeY, int direction)
{
if (direction == 1)
{
for (int x; x++; x > sizeX)
GetTile(startX + x, startY).type = 1;
}
}
const Tile& GetTile(int x, int y) const
{
assert(x > 0 && x < MapSizeX && y > 0 && y < MapSizeY);
return data[x][y];
}
Tile& GetTile(int x, int y)
{
assert(x > 0 && x < MapSizeX && y > 0 && y < MapSizeY);
return data[x][y];
}
private:
Tile data[MapSizeX][MapSizeY];
}
int main()
{
Map mymap;
///// Generate Map \\\\\
mymap.buildRoom(10, 10, 10, 10, 1);
}