基本上我想使用传递给我的类的大小变量来创建一个多维数组,但我不知道该怎么做。
我已经尝试过了
//Class header
Tile * gameTile;
//Class cpp
gameTile = new Tile[size][size];
它不介意new Tile[size]
但不介意[size][size]
。这是为什么?
答案 0 :(得分:4)
失败,因为只有已分配数组的第一维可能具有动态大小。要克服此限制,您可以使用二维向量:
std::vector<std::vector<Tile> > gameTile(size, std::vector<Tile>(size));
答案 1 :(得分:1)
在Vlad提及的链接中,您可以使用向量,或者对于更快的内容,您可以使用以下代码初始化bidimentional数组:
int i;
int ** intTile;
intTile = new int*[5];
for (i = 0; i < 5; i++) {
intTile[i] = new int[5];
}
答案 2 :(得分:0)
你可以做到
Tile *gameTile = &((new Tile[size][size])[0][0]);
这会将你的多维数组中第一个元素的地址存储到gameTile。
答案 3 :(得分:0)
虽然你想使用二维数组,但我只想指出你是否也可以使用一维数组来达到目的。如果尺寸大小符合尺寸,您可以:
gameTile = new Tile[size*size];
//now gameTile[y][x] becomes:
Tile t = gameTile[x + y*size];
//if array is not square
gameTile = new Tile[width*height];
//now gameTile[y][x] becomes:
Tile t = gameTile[x + y*width];