c ++声明带结合的Rect结构

时间:2012-11-18 11:16:41

标签: c++

我想声明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;

2 个答案:

答案 0 :(得分:2)

你的语法错误了:结构的名字出现在正文之前,而不是之后:

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

在那里,现在你很高兴。

但请注意,“union”意味着C ++中完全不同的东西。 union是一种数据结构,与struct一样,可以对对象进行分组。但是,虽然struct的每个实例可以同时包含多个值,但union的实例一次只能包含单个值。它们有它们的用途,但是这些非常罕见,并且通常有更好的(和类型安全的)方法来实现它们。

答案 1 :(得分:2)

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

struct Rect {

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

};

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

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