Правильный способ инициализации динамического указателя на многомерный массив? [Дубликат]

На этот вопрос уже есть ответ здесь:

Как правильно работать с динамически размещаемыми многомерными массивами в 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];

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

Как я могу пойти и заставить этот многомерный указатель работать ??

Ответы на вопрос(4)

Ваш ответ на вопрос