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));
Надеюсь это поможет.