Предопределенный 2D массив без границ?

В классе я хочу создать массив (предопределенный, потому что он находится в классе заголовка) без указания границ, пока в классе не будет создан объект с его типом.
Например:

class RandomClass{
public:
int myarray[][];//Remember this is a 2D array, 1D arrays can be defined like this.
}

(Этот класс неполный, я знаю, просто притворись, что нет)
Очевидно, это не работает, потому что «мне не разрешено создавать массив без определения его границ»

Итак, мой вопрос, как я могу это сделать?
Или, может быть, как создать массив внутри конструктора класса, который будет доступен для всех членов класса.

Для небольшого количества информации о том, почему я хочу сделать это;
Я пытаюсь создать класс, который обрабатывает карты для 2D-игры, когда класс будет создан, ему будет задан размер карты через параметры его конструктора, а затем будет создан массив, так что он не должен быть каким-либо больше, чем размер самой карты.
Я знаю, что мог бы использовать векторы, однако мне трудно сделать их двухмерными. (Если вы ответите на мой вопрос, пожалуйста, ответьте сначала на главный вопрос, не говорите мне, как использовать вектор в этой ситуации — однако это также будет полезно)

Я опубликую ошибку, хотя причин для этого нет.

ошибка: объявление ‘myarray’ как многомерного массива должно иметь
оценки для всех размеров, кроме первого

3

Решение

Ответ на первый вопрос

int** myarray;

тогда в вашем конструкторе

RandomClass(int rows, int cols)
{
myarray = new int*[rows];
for (int i = 0; i < rows; ++i)
myarray[i] = new int[cols];
}

Ответ на второй вопрос

vector< vector<int> > myvector;

2D-вектор — это просто вектор векторов, тогда в вашем конструкторе

RandomClass(int rows, int cols) : myvector(rows, vector<int>(cols))
{
}
5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector