Как инициализировать массив позже при использовании переменной частного объекта (после инициализации объекта) - PullRequest
1 голос
/ 06 апреля 2019

Я хочу сначала инициализировать «фиктивный» массив при создании объекта. У меня есть это в частной части моего класса.

// Initialize dummy array when object is initialized.
int* matrix_[0][0];

Затем я хочу позже инициализировать новый массив, чтобы заменить фиктивный (тот, который имеет фактический размер). У меня есть метод для этого в моем классе:

void set_map_size(int width, int height) {
    int* pm[width][height];
    matrix_ = pm;
}

Итак, проблема в том, что я пытаюсь инициализировать этот массив после создания объекта. Я хочу, чтобы другие методы / другие объекты имели доступ к этому массиву.

Может быть, у меня должен быть указатель? Инициализировать указатель как nullptr при создании объекта, а затем изменить указатель, чтобы он указывал на массив?

1 Ответ

1 голос
/ 06 апреля 2019

Правильный способ сделать это в C ++ - это использовать векторы.

vector<vector<int>> matrix_;  

Затем вы можете динамически изменять размер вашей матрицы

void set_map_size(int width, int height) {
    matrix_.resize(height); 
    for (auto &x : matrix_) 
       x.resize(width);
}

Поскольку массивы имеют фиксированный размер, а массивы переменной длины не являются стандартными C ++ (даже если некоторые компиляторы принимают это).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...