Вы не можете расширять перечисление как таковое, конечно, не во время выполнения (что в любом случае бессмысленно, потому что enum
- это просто список литералов, заменяющих числовые константы).
Если вы на самом деле имеете в виду, что хотите расширитьсписок констант, используемых в вашем коде, затем читайте дальше:
Что вы можете сделать, это создать другое перечисление, которое будет «совместимо» таким образом (или аналогично):
enum {
E1_ONE,
E1_TWO,
E1_LAST,
} base;
enum {
E1_THREE = E1_LAST,
E1_FOUR,
E1_EXT_LAST,
} extension;
И используйте тип enum extension
в своем коде, где вы обрабатываете новые значения, но тип enum base
в унаследованном коде, который вы расширяете.
enum
- это целое число с ограниченными значениями,поэтому вам придется проверять ограничения и т. д.
Если у вас есть доступ к исходному исходному коду (что, я полагаю, вы делаете ...), было бы лучше изменить исходное перечисление, ИМХО.