gpt4 book ai didi

c++ - `typedef enum {} t` 是否允许 C++0x 中的作用域枚举元素标识符?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:12 27 4
gpt4 key购买 nike

我相信新的 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com