提问者:小点点

这个冒号在枚举声明中做什么?


我搜索了一下这个问题,想着一定有人以前问过这个问题。 我没有翻出任何结果,所以如果它已经,请张贴链接,并随时关闭问题。

我在EASTL中遇到了这样的代码:

enum : size_type {   // size_type = size_t                   
                npos     = (size_type)-1,
                kMaxSize = (size_type)-2
            };

我从未遇到过这样的enum声明。 在这种情况下,:是做什么的?


共2个答案

匿名用户

这是一个Microsoft扩展,允许您选择枚举值的基类型。 例如,这允许您指定值是无符号的(Microsoft的编译器通常在默认情况下选择有符号的),或者它们只占用8或16位(Microsoft通常默认为32位)。

这里记录了该语法:http://msdn.microsoft.com/en-us/library/2dzy4k6e(v=vs.100).aspx,但我找不到关于它实际功能的正式文档。

C++11添加了一个类似的特性,但语法略有不同。 在C++11中,可以这样写:

enum class MyEnum : size_type { .. values .. };

匿名用户

在C++0x中,可以指定枚举的基础类型。 在本例中,它将是size_type

(显然,在C++0x之前的其他地方可能会支持它作为扩展。)