让我们看一下我最近在项目某处发现的代码构造:
namespace Test
{
enum EName
{
CoolEnum,
NiceEnum
};
enum CoolEnum
{
CoolVal1,
CoolVal2
};
enum NiceEnum
{
NiceVal1,
NiceVal2
};
}
我的问题是为什么编译器允许这样的事情。让我们在这里看一个代码示例:
Test::CoolEnum cEnum = Test::NiceVal1; // INVALID, as compiler refers to Test::CoolEnum value of Test::Ename enum
为什么允许这样的混淆?我理解为什么我必须添加 enum 关键字,所以编译器清楚地知道我正在声明给定枚举的变量,而不是使用同一命名空间中其他枚举的值。我只是不明白为什么首先甚至可以进行这样的构造。