嗨,我正在用 C++ 编写一个带有 OO 设计的简单版本的 Pacman。我在显示二维数组的内容时遇到问题。该数组包含一堆符号,它们代表地图/迷宫的墙壁。这是我编写的示例代码:
游戏.h
class Game
{
private:
char map;
public:
Game();
void displayMap();
};
游戏.cpp
char map[10][20] = {...};
void Game::displayMap()
{
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 20; j++)
{
cout << map[i][j] << " ";
}
cout << endl;
}
}
编译器会在[i]
说"expression must have pointer-to-object type"
.
但是如果我在头文件中定义数组的大小,并在定义构造函数时赋值
游戏.h
class Game
{
private:
char map[10][20];
};
游戏.cpp
Game::Game()
{
char map[10][20] = {...};
}
它会编译,但是当我尝试显示数组的内容(使用相同的代码displayMap()
)时,我发现它充满了垃圾。我认为这是因为该任务不是任务。它实际上是对堆栈上另一个数组的初始化,因此该数组在构造函数完成后被销毁,并且displayMap()
此时显示原始未分配的数组。
我可能是错的,所以请随时纠正我。我需要关于如何构建游戏以避免此问题的建议