我想知道在C++中我是否有枚举可以访问第二个索引的值?比如我有
enum Test{hi, bye};
Run Code Online (Sandbox Code Playgroud)
如果我想'嗨',我可以做一些像Test [0],谢谢.
Jar*_*Par 26
是的,不是.如果你的枚举没有明确的值,那么就有可能.如果没有显式值,则枚举值按声明的顺序给出数值0-N.例如 ...
enum Test {
hi, // 0
bye // 1
}
Run Code Online (Sandbox Code Playgroud)
这意味着索引只是转换为文字值.
Test EnumOfIndex(int i) { return static_cast<Test>(i); }
Run Code Online (Sandbox Code Playgroud)
这当然在运行时进行0验证,并且一旦添加显式值,它就会崩溃.但它将在默认情况下工作.
xan*_*xan 10
除非另有说明,否则枚举开始编号为0,每个条目递增1.
enum Test
{
hi, //0
bye, //1
count //2
}
Run Code Online (Sandbox Code Playgroud)
您可以将int转换为枚举的类型以获取所需的值,例如:
(Test)0;
//or
Test(0);
Run Code Online (Sandbox Code Playgroud)
这可以让你做以下事情:
for(int i = 0; i < count; i++)
{
DoSomething((Test)i);
}
Run Code Online (Sandbox Code Playgroud)
枚举将名称映射到值。在您的情况下, (int)hi 的值为 0,(int)bye 的值为 1。您可以使用强制转换来获取 hi 的值:
int myInteger = 0;
Test myValue = (Test)myInteger;
Run Code Online (Sandbox Code Playgroud)
但请注意,如果 myInteger 超出范围,则 myValue 可能是无效的枚举值。