我相信新的C++标准允许枚举类型的额外"范围":
enum E { e1, e2 };
E var = E::e1;
Run Code Online (Sandbox Code Playgroud)
由于我知道很多源文件包含旧的C风格枚举typedef,我想知道新标准是否允许对这些匿名枚举类型使用typedef:
typedef enum { d1, d2 } D;
D var = D::d1; // error?
Run Code Online (Sandbox Code Playgroud)
新标准将添加一种新类型的强枚举,但语法略有不同,旧样式枚举将兼容(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)
Run Code Online (Sandbox Code Playgroud)
这里有一个C++ FAQ 来处理这个特殊问题.
| 归档时间: |
|
| 查看次数: |
639 次 |
| 最近记录: |