¿Alguien puede explicar esta notación en C ++?
Pregunta
if (vector1.x > ((float*)&vector1)[j])
¿Es j simplemente un índice en el vector?
p.ej. ¿Es C ++ capaz de recuperar estos valores utilizando la notación de matriz aunque el vector no es una matriz?
Si es así, supongo que se logra esto haciendo referencia a vector por su dirección?
Solución
El estándar de C ++ dice que lanzar el puntero de una estructura (pods) a un puntero del tipo de su primer elemento producirá un puntero a su primer elemento:
struct a {
float a1;
float a2;
float a3;
};
a o1; ((float*)&o1); // points to o1.a1
Sospecho que el código le dijo al compilador que no agregue ningún relleno entre a1, a2 y a3, de modo que si indexa el puntero, apuntará exactamente al flotador que desea. Así que arriba
((float*)&o1)[1] // *would* return o1.a2
Eso depende de la plataforma, ya que el relleno no se puede cambiar en Standard C ++. Busque cómo lo arregla ese código y si tengo razón en absoluto :)