从匿名结构访问枚举条目
Access enum entries from anonymous struct
我有这样的代码:
struct
{
enum
{
entry,
} en;
} data;
void foo()
{
switch(data.en)
{
}
}
这给了我一个警告:
main.cpp:13:11: warning: enumeration value 'entry' not handled in switch [-Wswitch]
switch(data.en)
这是意料之中的。我很好奇我是否可以在不将我的结构命名为 one 的情况下添加case entry:
(这显然有效(。
这:
struct
{
enum
{
entry,
} en;
} data;
void foo()
{
switch(data.en)
{
case entry:
break;
}
}
给出错误 + 警告:
main.cpp: In function 'void foo()':
main.cpp:15:14: error: 'entry' was not declared in this scope
case entry:
^~~~~
main.cpp:13:11: warning: enumeration value 'entry' not handled in switch [-Wswitch]
switch(data.en)
^
你可以这样写:
case decltype(data.en)::entry:
但是我认为它不会被认为是好的代码。
在 C 中,您可以通过以下方式执行此操作
#include <stdio.h>
struct
{
enum
{
entry,
} en;
} data = { entry };
void foo()
{
switch ( data.en )
{
case entry:
puts( "Hello, World!" );
break;
}
}
int main( void )
{
foo();
}
在C++中,您可以通过以下方式进行操作
#include <iostream>
struct
{
enum
{
entry,
} en;
} data = { decltype( data.en )::entry };
void foo()
{
switch ( data.en )
{
case data.entry:
std::cout << "Hello, World!" << std::endl;
break;
}
}
int main()
{
foo();
}
相关文章:
- 如何正确实现和访问运算符的各种自定义枚举器
- 访问在 C++ 结构中声明的枚举变量
- 如何确保 Visual C++ 不允许作用域枚举访问?
- 通过包装器从 C 访问C++ API 时,如何访问枚举类型
- 从类访问枚举成员
- 如何通过索引访问枚举类
- 在类访问混淆中声明的枚举类型
- 如何访问 VTK 的类枚举字段
- C++ 如何访问内部枚举类?
- 如何将枚举类写入文件并在C++中访问它?
- 访问向量字段的键 - 枚举类还是命名空间中的枚举?
- 枚举范围无法通过 C++ 中的类中的结构访问
- 为什么 clang 不允许通过实例访问嵌套枚举类?
- 通过进程模块C 枚举时,访问被拒绝
- 访问在C++类中声明的枚举
- 我的私有方法如何在C++中访问公共枚举
- C++中枚举访问语义背后的基本原理
- 不同类中的枚举访问
- 通过作用域和类型化枚举访问元组值失败
- 是否可以使用枚举访问数组