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

Есть ли возможность создать перечисление A который наследует свойства enum B и дополнительно предусмотрена возможность расширения элементов?

Пример:

Enum A
- one
- two
- three

Enum B:A
- four

2 ответа

Решение

Нет, это невозможно. Базовые перечисления не поддерживают наследование.

Вы не можете этого сделать, но если вы вручную создадите два базовых перечисления, второе с одинаковыми метками и значениями первого, вы можете фактически "свернуть" их во время выполнения, как если бы они были унаследованы, таким образом (реальный код):

NoYes          e1; // 0 No, 1 Yes
NoYesError     e2; // 0 No, 1 Yes, 2 Error

e1 = NoYes::No;
e2 = e1+0; // Add zero to avoid compile error

info(strFmt("%1 %2", e1, e2));

e2 = NoYesError::Error;
e1 = e2+0; // Don't do that

info(strFmt("%1 %2", e1, e2));    

Надеюсь это поможет.

Другие вопросы по тегам