2016-04-28 7 views
-9

私は基本的に座標系を持っており、座標のインデックスで配列にアクセスしたいと思います。 posVector2f(私はsfmlを使用しています)です。エラー:無効な型 'int [200] [配列のサブスクリプトのfloat]

  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])]; 
+2

col、vx、vyの宣言を投稿することをお勧めします。 – Aconcagua

+0

@Aconcagua int col [HEIGHT + 1] [WIDTH + 1]; \t \tため(INT J = 1; J <= WIDTH; J ++)(; iが<=高さをI ++は、I = 1 INT)ため \t \t \t \t COL [I] [J] = N。 – RealGas

+0

vx、vy?ところで、あなたはcolの最初の行と最初の列を初期化せず、0(グローバル変数またはクラス変数の場合)または未初期化(スタックの場合)にしました。これは意図されていますか? – Aconcagua

答えて

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])]; 

は注意してください:暗黙のインデックスのチェックはありませんが、あなたの山車が範囲(負または> WIDTH/HEIGHT)の外にある場合、あなたはおそらくセグメンテーションに実行するように、エラー...

関連する問題