Я хочу объявить структуру 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;
Ты ищешь анонимные союзы. Синтаксис:
struct Rect {
union {
Vector2f pos;
struct {
float x,y;
};
};
union {
Vector2f size;
struct {
float width, height;
};
};
};
Демо-версия: http://ideone.com/JgqABu
(Я не рекомендую делать это хотя; я бы просто ПОЦЕЛУЙ и использовать векторы.)
Вы ошиблись в синтаксисе: имя структуры идет перед телом, а не после него:
struct Rect {
float x, y;
float width, height;
};
Там, теперь вы хорошо идти.
Но обратите внимание, что «союз» означает нечто совершенно другое в C ++. union
это структура данных, которая, как struct
, группирует объекты. Но в то время как каждый случай struct
может содержать несколько значений одновременно, экземпляр union
может только держать не замужем стоимость за раз. У них есть свои применения, но они довольно редки, и обычно есть лучшие (и безопасные) способы достижения того же самого.