¿La forma correcta de inicializar un puntero dinámico a una matriz multidimensional? [duplicar]
Esta pregunta ya tiene una respuesta aquí:
Cómo trabajar correctamente con matrices multidimensionales asignadas dinámicamente en C ++ [duplicar] 1 respuestaHe tenido mala suerte con los punteros dinámicos cuando los extiendo a 2 dimensiones o más. Por ejemplo quiero un puntero a una matriz 2D. Yo sé eso:
int A[3][4];
int (*P)[4] = A;
Es completamente legítimo (incluso si no entiendo completamente por qué). Teniendo en cuenta que:
int *P = new int[4];
Funciona, me imaginaba que:
int **P = new int[5][7];
También funcionaría, pero no lo es. Este código indica el error:
Error: A value of type "(*)[7]" cannot be used to initialize an entity of
type "int **"
Al ver esto, la nueva parte se convierte en un puntero a una matriz de 7 enteros que hice:
int (*P)[4] = new int[7][4];
Y esto funciona pero no es lo que quiero lograr. Al hacerlo así, estoy limitado a al menos usar un valor constante para cualquier dimensión posterior, pero quiero que esté completamente definido en el tiempo de ejecución y por lo tanto "dinámico".
¿Cómo podría ir y hacer funcionar este puntero multidimensional?