我想声明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;
答案 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;
};
};
};
(我不建议这样做;我只是KISS并使用向量。)