我正在尝试定义一个类。这就是我所拥有的:
enum Tile {
GRASS, DIRT, TREE
};
class Board {
public:
int toShow;
int toStore;
Tile* shown;
Board (int tsh, int tst);
~Board();
};
Board::Board (int tsh, int tst) {
toShow = tsh;
toStore = tst;
shown = new Tile[toStore][toStore]; //ERROR!
}
Board::~Board () {
delete [] shown;
}
但是,我在指示的行上收到以下错误——只有分配数组的第一个维度可以具有动态大小。
我想要做的不是硬编码,而是将参数 toShow 传递给构造函数并创建一个二维数组,该数组只包含我想要显示的元素。
但是,我的理解是,当构造函数被调用,并且显示被初始化时,它的大小会被初始化为toStore的当前值。然后即使 toStore 发生变化,内存已经分配给显示的数组,因此大小不应该改变。但是,编译器不喜欢这样。
我如何理解这一点是否存在真正的误解?有没有人有一个修复程序可以做我想做的事情,而不必对数组的大小进行硬编码?