Question

if (vector1.x > ((float*)&vector1)[j])

Est-ce que j est simplement un index dans le vecteur?
par exemple. C ++ est-il capable de récupérer ces valeurs en utilisant la notation de tableau même si le vecteur n'est pas un tableau?
Si tel est le cas, je suppose que cela se fait en référençant vecteur par son adresse?

Était-ce utile?

La solution

La norme C ++ indique que le fait de placer le pointeur d'un struct (pods) sur un pointeur du type de son premier élément donnera un pointeur sur son premier élément:

struct a {
    float a1;
    float a2;
    float a3;
};

a o1; ((float*)&o1); // points to o1.a1

Je soupçonne que le code a demandé au compilateur de ne pas ajouter de remplissage entre a1, a2 et a3, de sorte que s'il indexe le pointeur, il se dirigera exactement vers le flottant souhaité. Donc ci-dessus

((float*)&o1)[1] // *would* return o1.a2

Cela dépend de la plate-forme, car le remplissage ne peut pas être modifié en C ++ standard. Cherchez comment ce code l'arrange et si j'ai raison:)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top