0

Rect 構造を宣言したい:

struct{
   float x,y;
   float width,height;
}Rect;

ユニオン変数 x、y を 'pos' に、幅、高さを 'size' Vector2f 構造にします。

struct{
   float x,y;
}Vector2f;

ユニオンでどうすればいいですか?

Rect rect; 
//rec.x; rec.y; rect.pos; rect.pos.x; rect.pos.y; 
//rect.width; rect.height; rect.size; rect.size.x; rect.size.y;
4

2 に答える 2

2

匿名組合を探しています。構文は次のとおりです。

struct Rect {

   union {
       Vector2f pos;
       struct {
           float x,y;
       };
   };
   union {
       Vector2f size;
       struct {
           float width, height;
       };
   };

};

デモ: http://ideone.com/JgqABu

(ただし、それを行うことはお勧めしません。KISSしベクターを使用するだけです。)

于 2012-11-18T11:32:41.503 に答える
2

構文が間違っています: 構造体の名前は本体の後ではなく前に来ます:

struct Rect {
   float x, y;
   float width, height;
};

これで準備完了です。

ただし、「ユニオン」は C++ ではまったく異なるものを意味することに注意してください。Aは、 のようにオブジェクトをグループunion化するデータ構造です。structただし、 のすべてのインスタンスはstruct複数の値を同時に保持できますが、 のインスタンスは一度に1 つのunion値しか保持できません。それらには用途がありますが、それらは非常にまれであり、通常、同じことを達成するためのより良い (そして型安全な) 方法があります。

于 2012-11-18T11:25:44.160 に答える