Error: invalid types ‘int [200][float]’ for array subscript

Error: invalid types ‘int [200][float]’ for array subscript

我基本上有一个坐标系统,我想通过坐标索引访问数组。 posVector2f(我用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),您很可能 运行 陷入分段错误...