Я сделать двумерный массив, динамический массив, содержащий несколько статических массивов (шорты):Как установить переменную constexpr в обычную переменную?
constexpr unsigned char constColumnMax = columnMax; //wrong
using column = std::array<short, constColumnMax>;
column * row = new column[rowMax];
row[0][0] = 10;
Где columnMax
является символ без знака, который имеет значение, установленное с помощью предыдущей функции, определение столбца делает up статические массивы, & массив строк - это динамический массив столбцов.
Проблема в том, что мой код для установки constexpr, constColumnMax
, равный columnMax
, неверен. Однако переменная, которую я положил в std::array<>
, должна быть constexpr.
Я в тупике. Единственное, о чем я могу думать, это использовать цикл для увеличения constColumnMax
, который не будет работать по понятным причинам. Любая помощь, которую вы, ребята, можете дать, будет очень признательна.
Так что у меня нет выбора, кроме как использовать вектор? – Larrimus
@Larrimus Довольно много. Функции также могут быть 'constexpr', поэтому, если вы можете сделать все данные в функции известными во время компиляции, вы можете использовать' std :: array'. Но я предполагаю, что это невозможно в вашем случае. –
Umm ... Я попытался создать вектор массивов с помощью: 'std :: vector>' & Я получаю ту же ошибку, что выражение 'columnMax' должно иметь постоянное значение. –
Larrimus