У меня в настоящее время есть 2d-массив в моей программе, который хранит координаты для куба. Он инициализируется вверху и легко заполняется значениями, которые я хочу в нем, таким образом.
float cubeRef[3][8] = { { -1, 1, 1, -1, -1, 1, 1, -1 },
{ 1, 1, -1, -1, 1, 1, -1, -1 },
{ 1, 1, 1, 1, -1, -1, -1, -1, } };
Однако во время моей программы координаты меняются, и у меня есть функция, которая "возвращает" их обратно к значениям по умолчанию, которые вы видите выше. Однако, если я попытаюсь сбросить их, используя тот же метод, что и раньше.
cubeRef = { { -1, 1, 1, -1, -1, 1, 1, -1 },
{ 1, 1, -1, -1, 1, 1, -1, -1 },
{ 1, 1, 1, 1, -1, -1, -1, -1, } };
Он не будет работать здесь, с сообщением об ошибке "Выражение должно быть изменяемым значением".
Почему я не могу заполнить массив 2d после инициализации так же, как я могу, когда я его создал? И как я могу вернуть массив 2d в его значения по умолчанию, не заполняя каждое пространство отдельно?
Вы не можете назначить массив, это просто невозможно.
У вас может быть два массива, тот, который вы модифицируете, и тот, который содержит значения по умолчанию. Затем, когда вы хотите сбросить модифицируемый массив, вы просто копируете из массива по умолчанию, используя либо std::copy
, memcpy
либо в цикле.
В противном случае вам придется вручную устанавливать каждую запись по одному.
std::array
.