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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top