Правильный способ инициализации динамического указателя на многомерный массив? [Дубликат]
На этот вопрос уже есть ответ здесь:
Как правильно работать с динамически размещаемыми многомерными массивами в C ++ [duplicate] 1 ответМне не повезло с динамическими указателями, когда я масштабировал их до 2-х измерений и выше. Например, я хочу указатель на 2D-массив. Я знаю это:
int A[3][4];
int (*P)[4] = A;
Это совершенно законно (даже если я не совсем понимаю, почему). Принимая во внимание, что:
int *P = new int[4];
работает, я предполагал, что:
int **P = new int[5][7];
Также будет работать, но это не так. Этот код заявляет об ошибке:
Error: A value of type "(*)[7]" cannot be used to initialize an entity of
type "int **"
Увидев это, новая часть становится указателем на массив из 7 целых чисел, который я сделал:
int (*P)[4] = new int[7][4];
И это работает, но это не то, чего я хочу достичь. Делая это таким образом, я ограничен, по крайней мере, использованием постоянного значения для любого последующего измерения, но я хочу, чтобы оно было полностью определено во время выполнения и, следовательно, "динамически".
Как я могу пойти и заставить этот многомерный указатель работать ??