C++入门第5版:未命名枚举创建对象



你好,我有这篇来自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;

本章并不意味着这是唯一可能的定义。


对不起,我错过了"我们可以仅将类型的对象定义为枚举"的一部分;。那么这是本章中的一个过时信息。我想是忘记编辑了。

最新更新