我在函数中创建了这个数组,并且变量MODEL_VERTEX_NUM初始化为@ runtime,我猜这是这里的关键点。
loat model_vertices [][]= new float [MODEL_VERTEX_NUM][3];
我收到了以下错误:
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]'
当我这样做时,我意识到:
float model_vertices *[]= new float [MODEL_VERTEX_NUM][3];
编译器允许这个传递,但我想了解上一个声明的错误。
那么,[][]
声明出了什么问题?
答案 0 :(得分:8)
对于二维数组a [X] [Y],编译器需要知道Y来生成访问数组的代码,因此需要将代码更改为
float (*model_vertices) [3]= new float [2][3];
如果你有一个T a [X] [Y]类型的数组,并想要访问[x] [y],这相当于访问(((T )(& a [0] [0]))+ x * Y + y)。正如您所看到的,编译器需要知道Y而不是X来生成用于访问数组的代码。