我不确定要搜索什么来尝试找到我的答案,所以请将我重定向到任何相关文章,我提前道歉。
我真的是 C++ 新手,正在尝试制作一个 3x3 CLI Tile 游戏。我可以将 Tile 对象分配给 TileGame 构造函数中的私有指针数组,并查看它们具有有效的内存地址(或者我认为是这样)。我的问题是当我运行一个方法来尝试访问该数据时。看起来数组中的第一个元素有一个值,但其他元素看起来很奇怪。我敢肯定这是一件小事,但我不知道自己做错了什么。我也尝试过创建一个访问器方法,但这似乎只会使事情复杂化。
#include <iostream>
using namespace std;
class Tile
{
private:
int position;
int tileID;
public:
Tile(int, int);
};
// tile constructor
Tile::Tile(int p, int id) : position(p), tileID(id) {}
class TileGame
{
private:
const int MAX_TILES;
Tile* tiles[];
public:
TileGame();
void shuffle();
};
// game constructor
TileGame::TileGame() : MAX_TILES(8)
{
Tile* tiles[MAX_TILES];
for (int i = 0; i < MAX_TILES; i++)
{
tiles[i] = new tile(i, i);
}
// spit out the addresses for each
cout << endl << "From TileGame(): " << endl;
for (int i = 0; i < MAX_TILES; i++)
{
cout << tiles[i] << endl;
}
}
void TileGame::shuffle()
{
// spit out the addresses for each
cout << endl << "From TileGame(): " << endl;
for (int i = 0; i < MAX_TILES; i++)
{
cout << tiles[i] << endl; // <-- This seems to be the problem
}
}
int main()
{
TileGame* game = new TileGame();
game->shuffle();
}
这应该编译(我不得不重新输入它,所以我希望我没有犯错。)我得到的输出是这样的:
From TileGame():
0x7f9349c03aa0
0x7f9349c03ab0
0x7f9349c03ac0
0x7f9349c03ad0
0x7f9349c03ae0
0x7f9349c03af0
0x7f9349c03b00
0x7f9349c03b10
From shuffle():
0x7fff9502752c
0x100
0
0
0
0
0
0
当我通过尝试访问tiles[]
值不断遇到段错误时,我到达了这一点。想法?