众所周知,C++03中的enum
不支持增减操作,因为C++03中的enum
可能是非连续的。但是C++11标准引入了新的enum class
构造,据维基百科称它更加类型安全,因为它不是建立在任何简单可数类型之上的。因此,现在如果我们有一个有限的枚举值列表,我们能否编写类似以下的代码:
enum class Colors { Black, Blue, White };
// ...
Colors color = Colors::White;
color++;
并且它能够正确地工作吗(例如,对White
进行递增将返回Black
,对Black
进行递减将返回White
)?
如果我们无法编写这样的代码,您是否知道任何类似于行为的类,可以从boost
或Qt
中提供此功能(在递增和递减时是正确的)?
enum class
不是建立在基本整型上的?唯一的区别是现在你可以选择基础类型,而不是由编译器以实现依赖的方式自动选择。 - Ben Voigt