Error: invalid types ‘int [200][float]’ for array subscript
Error: invalid types ‘int [200][float]’ for array subscript
我基本上有一个坐标系统,我想通过坐标索引访问数组。 pos
是Vector2f
(我用sfml)。
int iposy=static_cast<int>(pos.y);
int iposx=static_cast<int>(pos.x);
if(col[iposy][iposx]==N)
col[iposy][iposx]=i;
else{
int vx1 = vx[i];
int vx2 = vx[(col[iposy][iposx])];
int vy1 = vy[i];
int vy2 =vy[(col[iposy][iposx])];
我收到以下错误:
error: invalid types ‘int [200][float]’ for array subscript
int vx2 = vx[(col[iposy][iposx])];
error: invalid types ‘int [200][float]’ for array subscript
int vy2 =vy[(col[iposy][iposx])];
所以从评论来看:如果 col 是 float col[H][W];
,你试图通过浮点数索引 vx/vy。您将不得不再次转换为 int:
int vx2 = vx[static_cast<int>(col[iposy][iposx])];
int vy2 = vy[static_cast<int>(col[iposy][iposx])];
注意:没有隐式索引检查,因此如果您的浮点数超出范围(负数或 > WIDTH/HEIGHT),您很可能 运行 陷入分段错误...
我基本上有一个坐标系统,我想通过坐标索引访问数组。 pos
是Vector2f
(我用sfml)。
int iposy=static_cast<int>(pos.y);
int iposx=static_cast<int>(pos.x);
if(col[iposy][iposx]==N)
col[iposy][iposx]=i;
else{
int vx1 = vx[i];
int vx2 = vx[(col[iposy][iposx])];
int vy1 = vy[i];
int vy2 =vy[(col[iposy][iposx])];
我收到以下错误:
error: invalid types ‘int [200][float]’ for array subscript
int vx2 = vx[(col[iposy][iposx])];
error: invalid types ‘int [200][float]’ for array subscript
int vy2 =vy[(col[iposy][iposx])];
所以从评论来看:如果 col 是 float col[H][W];
,你试图通过浮点数索引 vx/vy。您将不得不再次转换为 int:
int vx2 = vx[static_cast<int>(col[iposy][iposx])];
int vy2 = vy[static_cast<int>(col[iposy][iposx])];
注意:没有隐式索引检查,因此如果您的浮点数超出范围(负数或 > WIDTH/HEIGHT),您很可能 运行 陷入分段错误...