小智 5
好4年后到OP这里是你的答案......
问题: 对于无范围的枚举,您可以遇到以下情况:
enum Suit { Diamonds, Hearts, Clubs, Spades };
enum Tools { Picks, Shovels, Spades, Hammers }; // error C2365: 'Spades' :
// redefinition; previous definition was 'enumerator'
Run Code Online (Sandbox Code Playgroud)
解决方案:
Scoped enums solve this problem:
enum class Suit { Diamonds, Hearts, Clubs, Spades };
enum class Tools { Picks, Shovels, Spades, Hammers };
Run Code Online (Sandbox Code Playgroud)
资料来源: MSDN
在枚举定义中使用关键字class或struct表示每个枚举类型都是唯一的,并且与其他枚举类型不可比.除了这个优点之外,您还可以在不指定基础类型的情况下对它们进行前向声明(如果您打算进行前向声明,则可以使用未作用域的枚举).