你好,我有这篇来自C++入门第五版的文章:"枚举":
enum {floatPrec = 6, doublePrec = 10, double_doublePrec = 10};
如果
enum
未命名,则我们可以仅将该类型的对象定义为enum
定义的一部分。与类定义一样,我们可以在结束enum
定义的闭花和分号之间提供一个逗号分隔的声明符列表(§2.6.1,第73页(。
-
但是我可以使用
auto
类型说明符或decltype
从表达式中获取未命名enum
的类型:enum {RED = 1, GREEN, BLUE, ALPHA}; auto bk_color = GREEN; std::cout << typeid(bk_color).name() << 'n'; decltype(ALPHA) fg_color = RED; std::cout << typeid(fg_color).name() << 'n';
输出:
Z4mainEUt_
Z4mainEUt_
- 所以我认为这是书中的一个错误,不是吗?谢谢
本章表示对象定义可能如下所示:
enum {RED = 1, GREEN, BLUE, ALPHA} bk_color = GREEN, fg_color = RED;
本章并不意味着这是唯一可能的定义。
对不起,我错过了"我们可以仅将类型的对象定义为枚举"的一部分;。那么这是本章中的一个过时信息。我想是忘记编辑了。