2d-Array Rückgabe
-
Hallo!
Wie bringe ich die Funktion dazu, ein 2d Array zurück zu geben? Bin ich gezwungen das Array mit einem reinterpret_cast auf char**** zu casten?
const char shapes[7][4][4][4] = { bla bla }; const char** GetShape(int x, int y) { return shapes[x][y]; }Gruss
Stefan
-
Öhm, ich verstehe irgendwie nicht, was du möchtest?
Das was du versuchst zurückzugeben, ist ein Element deines 2D-Arrays.
-
const char (&GetShape(int x, int y))[4][4] { return shapes[x][y]; }ein typedef ist angebracht:
typedef const char (&slice_2d)[4][4]; slice_2d GetShape(int x, int y) ...
-
Ich habe ein 4d-Array und möchte mittels einer Funktion ein 2d-Array extrahieren. Das beispiel, das ich geschrieben habe, funktioniert nicht, weil Array und Pointer scheinbar nicht kompatibel sind.
-
Stefan schrieb:
Ich habe ein 4d-Array und möchte mittels einer Funktion ein 2d-Array extrahieren. Das beispiel, das ich geschrieben habe, funktioniert nicht, weil Array und Pointer scheinbar nicht kompatibel sind.
nicht nur scheinbar. Wenn es das Gleiche wäre, bräuchten wir nicht zwei verschiedene Begriffe dafür.
-
Wieso eigentlich die ganze Geschichte mit sovielen Dimensionen. Das ist doch alles viel zu umständlich und kompliziert. Vllt kannst du es ja anders lösen ...
-
camper schrieb:
const char (&GetShape(int x, int y))[4][4] { return shapes[x][y]; }ein typedef ist angebracht:
typedef const char (&slice_2d)[4][4]; slice_2d GetShape(int x, int y) ...Wieso brauche ich (& ) damit die Funktion ein Array zurück geben kann? Wie nennt man dieses Konstrukt?

-
Stefan schrieb:
camper schrieb:
const char (&GetShape(int x, int y))[4][4] { return shapes[x][y]; }ein typedef ist angebracht:
typedef const char (&slice_2d)[4][4]; slice_2d GetShape(int x, int y) ...Wieso brauche ich (& ) damit die Funktion ein Array zurück geben kann? Wie nennt man dieses Konstrukt?

Das ist eine Referenz. Per Value kannst du keine Arrays zurückgeben. Alternative wäre die Rückgabe eines Pointers auf das erste Element dieses Arrays. Das bringt allerdings keinerlei Vorteile, es gehen nur Typinformationen verloren:
const char (*GetShape(int x, int y))[4] { return shapes[x][y]; }
-
Danke, das hat mir geholfen.