#cpp
Есть два enum: enum OBJECT_PULSES и enum OBJECT_SENSOR_MODE_RD имена в перечислениях одинаковые RD_CH..., но их числовые значения разные. При компиляции ошибка: redeclaration. Это особенность языка или что не так с настройками компилятора, как это побороть кроме как переименования? enum OBJECT_PULSES { RD_CH1 = 14, // Счетчик импульсов, канал 1 // ... RD_CH32 = 45 // Счетчик импульсов, канал 32 }; enum OBJECT_SENSOR_MODE_RD { RD_CH1 = 46, // RD. Режим датчика, канал 1 // ... RD_CH32 = 77, // RD. Режим датчика, канал 32 };
Ответы
Ответ 1
Константы enum'ов не имеют собственной области видимости, поэтому у приведённых двух енумов всё оказывается в одной области видимости. Естественно, в одной области видимости одинаковые имена недопустимы. Как вариант, можно использовать enum class, которые создают свой скоуп. Либо использовать более старую идею с обёртыванием enum'а в пространство имён.
Комментариев нет:
Отправить комментарий