Декларация c ++ Структура Rect с объединением

Я хочу объявить структуру 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;

0

Решение

Ты ищешь анонимные союзы. Синтаксис:

struct Rect {

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

};

Демо-версия: http://ideone.com/JgqABu

(Я не рекомендую делать это хотя; я бы просто ПОЦЕЛУЙ и использовать векторы.)

2

Другие решения

Вы ошиблись в синтаксисе: имя структуры идет перед телом, а не после него:

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

Там, теперь вы хорошо идти.

Но обратите внимание, что «союз» означает нечто совершенно другое в C ++. union это структура данных, которая, как struct, группирует объекты. Но в то время как каждый случай struct может содержать несколько значений одновременно, экземпляр union может только держать не замужем стоимость за раз. У них есть свои применения, но они довольно редки, и обычно есть лучшие (и безопасные) способы достижения того же самого.

2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector