Kann jemand diese C ++ Notation erklären?
Frage
if (vector1.x > ((float*)&vector1)[j])
Ist j einfach nur ein Index in den Vektor?
z.B. C ++ können diese Werte unter Verwendung von Array-Notation obwohl Vektor kein Array abzurufen?
Wenn dies der Fall erreicht Ich vermute, es dies durch Bezugnahme auf Vektor durch seine Adresse?
Lösung
Die C ++ Standard besagt, dass auf einen Zeiger des Typs des ersten Elements ein (Hülsen) Struktur des Zeigers Gießen einen Zeiger auf das erste Element ergeben:
struct a {
float a1;
float a2;
float a3;
};
a o1; ((float*)&o1); // points to o1.a1
Ich vermute, dass Code der Compiler gesagt keine Polsterung zwischen a1, a2 und a3 hinzuzufügen, so dass, wenn es Indizes der Zeiger, wird es genau mit dem Schwimmer Zeiger es will. So oben
((float*)&o1)[1] // *would* return o1.a2
Das ist plattformabhängig, als Polsterung nicht in Standard C ++ geändert werden kann. Lookup, wie das Code ordnet sie, und ob ich Recht überhaupt:)