Как можно создать структуру для использования значений, аналогичную приведенной в следующем коде, вместе с возможностью вывода их через `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, то так делать нельзя: <br/> 1. Вложенные в enum определения делать нельзя - это ограничение самого синтаксиса ( <a href="https://en.cppreference.com/w/c/language/enum#Syntax" rel="nofollow">дока</a> ) <br/> 2. Для использования перечислений не надо указывать само название перечисления. Т.е. не <code>OBJ::SOMETHING</code> , а просто <code>SOMETHING</code> . Т.е. видимость глобальная и нельзя дублировать названия, даже для разных enum <br/> <br/> В случае C++ аналогично. Есть <a href="https://stackoverflow.com/a/15057827/14109140" rel="nofollow">хак</a> - использование неймспейсов или структур для топ левела, но не в твоем случае - ты хочешь топ левел перечислениям значения задавать <br/> <br/> На мой взгляд тут решение: <br/> 1. Разбить их на различные перечисления <br/> 2. Добавить каждому префикс <br/> <pre><code class="cpp">enum OBJ = 0 {
Default = 0,
Something_Something1 = 1,
Something_Something1 = 2,
Something = 7
};</code></pre>