2016-04-28 6 views
-9

Ich habe grundsätzlich ein Koordinatensystem und möchte auf das Array nach Koordinatenindex zugreifen. pos ist Vector2f (ich benutze sfml).Fehler: ungültige Typen 'int [200] [float]' für Array-Index

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

ich folgende Fehler:

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

Gute Idee, um die Deklaration von col, vx, vy auch zu posten ... – Aconcagua

+0

@Aconcagua int col [HÖHE + 1] [BREITE + 1]; \t for (int i = 1; i <= Höhe; i ++) \t \t for (int j = 1, j <= Breite; j ++) \t \t \t col [i] [j] = N; – RealGas

+0

vx, vy? Übrigens: Sie haben die erste Zeile und die erste Spalte von col nicht initialisiert und sie bei 0 (bei globalen oder Klassenvariablen) oder bei nicht initialisierten (wenn auf Stapel) belassen. Ist das beabsichtigt? – Aconcagua

Antwort

1

So aus den Kommentaren: Wenn col float col[H][W]; ist, Ihr zu indizieren vx/vy über einen Schwimmer versuchen. Sie müßten wieder in int Stimmen:

int vx2 = vx[static_cast<int>(col[iposy][iposx])]; 
int vy2 = vy[static_cast<int>(col[iposy][iposx])]; 

Vorsicht: Es gibt keine implizite Index Prüfung, so dass, wenn Ihr Schwimmer außerhalb des zulässigen Bereichs (negativ oder> Breite/Höhe) ist, werden Sie höchstwahrscheinlich in eine Segmentierung laufen Fehler ...