Qualcuno può spiegare questa notazione C ++?
Domanda
if (vector1.x > ((float*)&vector1)[j])
j è semplicemente un indice nel vettore?
per esempio. C ++ è in grado di recuperare questi valori usando la notazione di array anche se vector non è un array?
In tal caso, suppongo che raggiunga questo obiettivo facendo riferimento a vettore con il suo indirizzo?
Soluzione
Lo standard C ++ afferma che il lancio di un puntatore di una struttura (pod) su un puntatore del tipo del suo primo elemento produrrà un puntatore al suo primo elemento:
struct a {
float a1;
float a2;
float a3;
};
a o1; ((float*)&o1); // points to o1.a1
Sospetto che il codice abbia detto al compilatore di non aggiungere alcun riempimento tra a1, a2 e a3, in modo che se indicizza il puntatore, punterà esattamente al float che desidera. Quindi sopra
((float*)&o1)[1] // *would* return o1.a2
Dipende dalla piattaforma, poiché il riempimento non può essere modificato in Standard C ++. Cerca come lo organizza quel codice e se ho ragione :)