您可以使用typedef使Color枚举类型可访问,而不指定它的"全名".
Run Code Online (Sandbox Code Playgroud)typedef Sample::Colour Colour; Colour c = Colour::BLUE;
这听起来对我来说是正确的,但有人对它进行了投票并留下了这个评论:
在枚举上使用范围解析运算符::(在"Color :: BLUE"中)是特定于编译器的扩展,而不是标准C++
真的吗?我相信我已经在MSVC和GCC上都使用了它,尽管我不确定.
我尝试了以下代码:
enum test
{
t1, t2, t3
};
void main()
{
test t = test::t1;
}
Run Code Online (Sandbox Code Playgroud)
Visual C++ 9使用以下警告编译它:
警告C4482:使用非标准扩展名:枚举'test'用于限定名称
看起来不像是标准.
这在 C++98 中是不允许的。但是,从 C++11 开始,您可以选择将范围解析运算符与“旧式”枚举一起使用
enum E { A };
int main()
{
A; // OK
E::A; // Also OK
}
Run Code Online (Sandbox Code Playgroud)
这两种引用方式A在 C++11 及更高版本中都是正确的。