class A
{
public:
union
{
struct
{
unsigned f1: 1;
unsigned f2: 1;
};
unsigned char value;
} flags;
};
Union и наследование
Код:
Каким образом от этого класса можно провести наследование, чтобы расширить набор битовых полей в union? Т.е. добавить новые битовые поля, но не затирая старые?
Код:
class B: public A
{
public:
union
{
struct
{
unsigned f3: 1;
unsigned f4: 1;
};
} flags;
};
{
public:
union
{
struct
{
unsigned f3: 1;
unsigned f4: 1;
};
} flags;
};
Похоже такой вариант полностью переопределяет union flags, а не расширяет его. Какие есть варианты, кроме полного переписывания union'а?
Цитата: Gigahard
Похоже такой вариант полностью переопределяет union flags, а не расширяет его. Какие есть варианты, кроме полного переписывания union'а?
Он не переопределяет, а определяет новый.
В твоем производном классе теперь да union:
A::flags
B::flags
Варианта "расширения union" нет.
Я бы рекомендовал вообще не использовать, как union в общем, так и битовые поля в частности.
Их вполне заменяют маски или bool.