Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Union и наследование

590
16 апреля 2008 года
Gigahard
223 / / 03.04.2006
Есть класс, в котором присутствует объединение (union) flags:
Код:
class A
{
     public:
     union
     {
          struct
          {
               unsigned f1: 1;
               unsigned f2: 1;
          };
          unsigned char value;
     } flags;
};

Каким образом от этого класса можно провести наследование, чтобы расширить набор битовых полей в union? Т.е. добавить новые битовые поля, но не затирая старые?
Код:
class B: public A
{
     public:
     union
     {
          struct
          {
               unsigned f3: 1;
               unsigned f4: 1;
          };
     } flags;
};

Похоже такой вариант полностью переопределяет union flags, а не расширяет его. Какие есть варианты, кроме полного переписывания union'а?
3
16 апреля 2008 года
Green
4.8K / / 20.01.2000
Цитата: Gigahard

Похоже такой вариант полностью переопределяет union flags, а не расширяет его. Какие есть варианты, кроме полного переписывания union'а?


Он не переопределяет, а определяет новый.
В твоем производном классе теперь да union:
A::flags
B::flags

Варианта "расширения union" нет.
Я бы рекомендовал вообще не использовать, как union в общем, так и битовые поля в частности.
Их вполне заменяют маски или bool.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог