在这个问题上,有一个答案表明:
您可以使用typedef使Color枚举类型可访问,而不指定它的"全名".
typedef Sample::Colour Colour; Colour c = Colour::BLUE;
这听起来对我来说是正确的,但有人对它进行了投票并留下了这个评论:
在枚举上使用范围解析运算符::(在"Color :: BLUE"中)是特定于编译器的扩展,而不是标准C++
真的吗?我相信我已经在MSVC和GCC上都使用了它,尽管我不确定.
我尝试了以下代码:
enum test { t1, t2, t3 }; void main() { test t = test::t1; }
Visual C++ 9使用以下警告编译它:
警告C4482:使用非标准扩展名:枚举'test'用于限定名称
看起来不像是标准.
那不标准.
在C++ 11中,您将能够使用枚举类声明制作带范围的枚举.
使用预C++ 11编译器来定义枚举,您需要在结构或命名空间内定义枚举.