D - [Bug?] Casting, rectangular array to dynamic array of array
- berupon (48/48) Feb 10 2004 It would be great if I could cast rectangular array to dynamic array of ...
- Carlos Santander B. (4/68) Feb 13 2004 I wouldn't call it a bug, but something not implemented. It's been
It would be great if I could cast rectangular array to dynamic array of array. Below is test code. void printArray(int[] arr) { for (int i=0; i<arr.length; ++i) { printf("[%d] = %d\n", i, arr[i]); } } int main(char[][] arg) { static int[2] arr1 = [1, 2]; static int[] arr2 = [1, 2, 3]; printArray(arr2); printf("\n"); // Casting // (DynamicArray) StaticArray // works right arr2 = cast(int[]) arr1; printArray(arr2); printf("\n"); static int arra1[3][2] = [ [1, 2], [3, 4], [5, 5] ]; int arr[]; arr = cast(int[]) arra1[0]; printArray(arr); printf("\n"); // Casting // (DynamicArrayOfArray) RectangularArray // produces odd array int arra[][]; arra = cast(int[][]) arra1; // Compile passes printArray(arra[0]); // Access Violation Error return 0; } /* [0] = 1 [1] = 2 [2] = 3 [0] = 1 [1] = 2 [0] = 1 [1] = 2 Error: Access Violation */
Feb 10 2004
berupon wrote:It would be great if I could cast rectangular array to dynamic array of array. Below is test code. void printArray(int[] arr) { for (int i=0; i<arr.length; ++i) { printf("[%d] = %d\n", i, arr[i]); } } int main(char[][] arg) { static int[2] arr1 = [1, 2]; static int[] arr2 = [1, 2, 3]; printArray(arr2); printf("\n"); // Casting // (DynamicArray) StaticArray // works right arr2 = cast(int[]) arr1; printArray(arr2); printf("\n"); static int arra1[3][2] = [ [1, 2], [3, 4], [5, 5] ]; int arr[]; arr = cast(int[]) arra1[0]; printArray(arr); printf("\n"); // Casting // (DynamicArrayOfArray) RectangularArray // produces odd array int arra[][]; arra = cast(int[][]) arra1; // Compile passes printArray(arra[0]); // Access Violation Error return 0; } /* [0] = 1 [1] = 2 [2] = 3 [0] = 1 [1] = 2 [0] = 1 [1] = 2 Error: Access Violation */I wouldn't call it a bug, but something not implemented. It's been suggested before and Walter gave explanations which I really can't remember. I believe their internals are different. But I dunno...
Feb 13 2004