错误:数组下标的类型'int [200] [float]'无效

时间:2016-04-28 12:58:29

标签: c++ arrays floating-point integer sfml

我基本上有一个坐标系,我想通过坐标索引来访问数组。 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])];

1 个答案:

答案 0 :(得分:1)

所以从评论:如果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])];

注意:没有隐式索引检查,因此如果您的浮点数超出范围(负数或&gt; WIDTH / HEIGHT),您很可能会遇到分段错误......