Я полагаю, вы не знаете заранее количество строк и столбцов, поэтому вам нужно выполнить динамическое выделение c. Если мое предположение верно, вам нужно уже проанализировать данные лабиринта, прежде чем что-либо делать с массивом.
Итак, как только вы проанализируете эти измерения, вы можете сделать:
Board() {
//Parse maze data somehow before and then:
maze = new char[nrows*ncols]
for (int i = 0; i < numRows; i++) {
for (int j = 0; j < numCols; j++) {
maze[i][j] = emptyPos;
}
}
}
Это, конечно потребует, чтобы вы очистили этот массив лабиринта в деструкторе этого класса Board.
Намного более приятным решением было бы использование std :: vector, поскольку он обеспечивает очистку для вас. Думайте об этом как о массиве высокого уровня с дополнительными функциями и более безопасным API. Таким образом, лабиринт будет объявлен как:
std::vector<std::vector<char>> maze.
При этом вам не нужно будет писать деструктор самостоятельно, и ваш конструктор будет иметь вид:
Board() {
//Parse maze data somehow before and then:
maze.size(numRows);
for (int i = 0; i < numRows; i++) {
maze.at(i).size(numCols);
for (int j = 0; j < numCols; j++) {
maze[i][j] = emptyPos;
}
}
}