Как можно создать структуру для использования значений, аналогичную приведенной в следующем коде, вместе с возможностью вывода их через `cout` в C++:
```cpp
enum OBJ {
OBJ = 0
};
enum SOMETHING {
SOMETHING = 7,
SOMETHING1 = 1,
SOMETHING2 = 2
};
```
Да, можно создать вложенное перечисление в языках C/C++. Для этого можно определить структуру, в которой будут содержаться перечисления.
Пример:
```cpp
#include <iostream>
struct MyEnums {
enum OBJ {
OBJ = 0
};
enum SOMETHING {
SOMETHING = 7,
SOMETHING1 = 1,
SOMETHING2 = 2
};
};
int main() {
std::cout << MyEnums::OBJ::OBJ << std::endl;
std::cout << MyEnums::SOMETHING::SOMETHING << std::endl;
std::cout << MyEnums::SOMETHING::SOMETHING1 << std::endl;
std::cout << MyEnums::SOMETHING::SOMETHING2 << std::endl;
return 0;
}
```
В данном примере структура `MyEnums` содержит два вложенных перечисления `OBJ` и `SOMETHING`. После этого в `main()` мы можем обращаться к значениям перечислений через оператор разрешения области видимости `::`.
Если мы говорим про C, то так делать нельзя:
1. Вложенные в enum определения делать нельзя - это ограничение самого синтаксиса ( дока )
2. Для использования перечислений не надо указывать само название перечисления. Т.е. неOBJ::SOMETHING, а простоSOMETHING. Т.е. видимость глобальная и нельзя дублировать названия, даже для разных enum
В случае C++ аналогично. Есть хак - использование неймспейсов или структур для топ левела, но не в твоем случае - ты хочешь топ левел перечислениям значения задавать
На мой взгляд тут решение:
1. Разбить их на различные перечисления
2. Добавить каждому префикс
enum OBJ = 0 { Default = 0, Something_Something1 = 1, Something_Something1 = 2, Something = 7 };