Der richtige Weg, um einen dynamischen Zeiger auf ein mehrdimensionales Array zu initialisieren? [Duplikat]

Diese Frage hat hier bereits eine Antwort:

Richtiges Arbeiten mit dynamisch zugewiesenen mehrdimensionalen Arrays in C ++ [duplizieren] 1 Antwort

Ich hatte Pech mit dynamischen Zeigern, wenn ich sie auf zwei Dimensionen und höher einstellte. Zum Beispiel möchte ich einen Zeiger auf ein 2D-Array. Ich weiß das:

int A[3][4];
int (*P)[4] = A;

Ist völlig legitim (auch wenn ich nicht ganz verstehe warum). In Anbetracht dessen, dass:

int *P = new int[4];

funktioniert, ich stellte mir vor, dass:

int **P = new int[5][7];

Würde auch funktionieren, ist es aber nicht. Dieser Code gibt den Fehler an:

Error: A value of type "(*)[7]" cannot be used to initialize an entity of
       type "int **"

Dadurch wird der neue Teil zu einem Zeiger auf ein Array von 7 Ganzzahlen, die ich erstellt habe:

int (*P)[4] = new int[7][4];

Und das funktioniert, aber es ist nicht das, was ich erreichen möchte. Auf diese Weise kann ich nur einen konstanten Wert für jede nachfolgende Dimension verwenden, aber ich möchte, dass er zur Laufzeit vollständig definiert und daher "dynamisch" ist.

Wie könnte ich gehen und diesen mehrdimensionalen Zeiger arbeiten lassen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage