C ++: Расширить определение enum? - PullRequest
1 голос
/ 26 июля 2011

Java-код Oracle имеет тенденцию использовать постоянные целочисленные идентификаторы, где эквивалентом будет перечисление в C ++. Хорошая вещь об использовании CII - вы можете легко добавить больше в базовый класс или производный класс и не нарушать код ( тоже плохо ...) Мой вопрос: есть ли способ достичь этого, используя enum в C ++, или мне нужно придерживаться констант?

Ответы [ 2 ]

11 голосов
/ 26 июля 2011

При условии, что вы не можете изменить исходное объявление enum и вам абсолютно необходимо это сделать, это возможно с использованием статического приведения.

enum ENUM_TYPE {
    VALUE1,
    VALUE2,
    VALUE3
};

static const ENUM_TYPE VALUE4 = static_cast<ENUM_TYPE>(VALUE3 + 1);
0 голосов
/ 26 июля 2011

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

C ++ полностью скомпилирован в нативный код.Любое изменение потребует полной компиляции.Если допустима полная перекомпиляция, то добавление нового элемента в перечисление возможно и даже меньше вероятность поломки кода, чем добавление CII.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...