Prawidłowy sposób zainicjowania dynamicznego wskaźnika na wielowymiarową tablicę? [duplikować]
To pytanie ma już tutaj odpowiedź:
Jak prawidłowo pracować z dynamicznie przydzielanymi wielowymiarowymi tablicami w C ++ [duplikat] 1 odpowiedźMiałem pecha z dynamicznymi wskaźnikami, gdy rozciąłem je na 2 wymiary i wyżej. Na przykład chcę wskaźnik do tablicy 2D. Wiem to:
int A[3][4];
int (*P)[4] = A;
Jest całkowicie legalny (nawet jeśli nie do końca rozumiem dlaczego). Biorąc pod uwagę, że:
int *P = new int[4];
działa, wyobrażałem sobie, że:
int **P = new int[5][7];
Czy działa również, ale tak nie jest. Ten kod określa błąd:
Error: A value of type "(*)[7]" cannot be used to initialize an entity of
type "int **"
Widząc to, nowa część staje się wskaźnikiem do tablicy 7 liczb całkowitych, które zrobiłem:
int (*P)[4] = new int[7][4];
I to działa, ale nie to, co chcę osiągnąć. Robiąc to w ten sposób, ograniczam się przynajmniej do używania stałej wartości dla każdego kolejnego wymiaru, ale chcę, aby był w pełni zdefiniowany w czasie wykonywania, a zatem „dynamiczny”.
Jak mogłem przejść i sprawić, by ten wielowymiarowy wskaźnik działał?