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?

¿Fue útil?

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 :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top