クラスを定義しようとしています。これは私が持っているものです:
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 をコンストラクターに渡し、表示したい要素のみを含む 2 次元配列を作成することです。
ただし、私の理解では、コンストラクターが呼び出されて初期化されると、そのサイズは toStore の現在の値に初期化されます。次に、toStore が変更されても、メモリは既に示されている配列に割り当てられているため、サイズは変更されません。ただし、コンパイラはこれを好みません。
私がこれをどのように理解しているかについて、真の誤解がありますか? 配列のサイズをハードコードすることなく、私がやりたいことを実行する修正を誰かが持っていますか?