0

我想声明 Rect 结构:

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

和联合变量 x,y 到 'pos' 和 width,height 到 '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 {
   float x, y;
   float width, height;
};

好了,现在你可以走了。

但请注意,“联合”在 C++ 中的含义完全不同。Aunion是一种数据结构,它像 a 一样对struct对象进行分组。但是,虽然 a 的每个实例struct可以同时保存多个值,但 a 的实例一次union只能保存一个。它们有它们的用途,但这些用途非常罕见,通常有更好的(和类型安全的)方法来实现相同的目的。

于 2012-11-18T11:25:44.160 回答
2

您正在寻找匿名工会。语法是:

struct Rect {

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

};

演示:http: //ideone.com/JgqABu

(不过我不建议这样做;我只是亲吻并使用向量。)

于 2012-11-18T11:32:41.503 回答