I created this array this array inside a function, with the variable MODEL_VERTEX_NUM initialized @ runtime, which, I guess, is the sticking point here.
loat model_vertices [][]= new float [MODEL_VERTEX_NUM][3];
I got the following errors:
1>.\GLUI_TEMPLATE.cpp(119) : error C2087: 'model_vertices' : missing subscript
1>.\GLUI_TEMPLATE.cpp(119) : error C2440: 'initializing' : cannot convert from 'float (*)[3]' to 'float [][1]'
I realize that when I do:
float model_vertices *[]= new float [MODEL_VERTEX_NUM][3];
The compiler lets this pass, but I wanna understand what's wrong with the previous declaration.
So, what's wrong with the [][]
declaration?
For a two-dimensional array a[X][Y]
the compiler needs to know Y
to generate code to access the array, so you need to change your code to
float (*model_vertices) [3] = new float [2][3];
If you have an array of type T
a[X][Y]
and want to access a[x][y]
that is equivalent to accessing *(((T*)(&a[0][0])) + x*Y + y)
. As you can see the compiler needs to know Y
but not X
to generate code for accessing the array.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With