@seriouscope

Возможно ли сделать nested enum c/c++?

Привет я хочу иметь возможность использовать
cout << OBJ //0
count << OBJ::SOMETHING //7
cout << OBJ::SOMETHING::SOMETHING1 //1
cout << OBJ::SOMETHING::SOMETHING2 //2

и при этом дефайнить значения как-то похоже на
enum OBJ = 0 {
	enum SOMETHING = 7 {
		SOMETHING1 = 1
		SOMETHING2 = 2
};

Какой подход можно выбрать
  • Вопрос задан
  • 79 просмотров
Пригласить эксперта
Ответы на вопрос 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Если мы говорим про C, то так делать нельзя:
1. Вложенные в enum определения делать нельзя - это ограничение самого синтаксиса (дока)
2. Для использования перечислений не надо указывать само название перечисления. Т.е. не OBJ::SOMETHING, а просто SOMETHING. Т.е. видимость глобальная и нельзя дублировать названия, даже для разных enum

В случае C++ аналогично. Есть хак - использование неймспейсов или структур для топ левела, но не в твоем случае - ты хочешь топ левел перечислениям значения задавать

На мой взгляд тут решение:
1. Разбить их на различные перечисления
2. Добавить каждому префикс
enum OBJ = 0 {
       Default = 0,
       Something_Something1 = 1,
       Something_Something1 = 2,
       Something = 7
};
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы