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

jは単なるベクトルへのインデックスですか?
たとえば、ベクトルが配列でなくても、C++ は配列表記を使用してこれらの値を取得できますか?
もしそうなら、アドレスでベクトルを参照することでこれを達成していると思いますか?

4

1 に答える 1

11

C++ 標準では、(ポッド) 構造体のポインターをその最初の要素の型のポインターにキャストすると、最初の要素へのポインターが生成されると述べられています。

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

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

コードがコンパイラーに a1、a2、a3 の間にパディングを追加しないように指示したため、ポインターにインデックスを付けると、必要な float を正確にポインターするようになったのではないかと思います。上記のように

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

標準 C++ ではパディングを変更できないため、これはプラットフォームに依存します。そのコードがそれをどのように配置するか、そして私がまったく正しいかどうかを調べてください:)

于 2009-01-01T13:23:47.990 に答える