作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我相信新的 C++ 标准允许枚举类型有一个额外的“作用域”:
enum E { e1, e2 };
E var = E::e1;
因为我知道很多包含旧 C 风格枚举类型定义的源文件,我想知道新标准是否允许对这些匿名枚举类型使用类型定义:
typedef enum { d1, d2 } D;
D var = D::d1; // error?
最佳答案
新标准将添加一种新型的强枚举,但语法会略有不同,旧式枚举将兼容(C++03 中的有效代码将是有效的 C++0x 代码)因此您将不需要做任何事情来保持遗留代码有效(不是 typedef,不是其他任何东西)。
enum class E { e1, e2 }; // new syntax, use E::e1
enum E2 { e1, e2 }; // old syntax, use e1 or E2::e1 (extension)
有一个 C++ 常见问题解答 here处理这个特定问题。
关于c++ - `typedef enum {} t` 是否允许 C++0x 中的作用域枚举元素标识符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2236699/
我是一名优秀的程序员,十分优秀!