こんにちは、C++ で OO 設計の Pacman の単純なバージョンを作成しています。2D 配列のコンテンツの表示に問題があります。配列には、マップ/迷路の壁を表す一連のシンボルが含まれています。私が書いたサンプルコードは次のとおりです。
ゲーム.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()
その時点で元の割り当てられていない配列が表示されます。
間違っているかもしれませんので、お気軽に訂正してください。この問題を回避するためにゲームをどのように構成すればよいかについての推奨事項が必要です