当前位置:  开发笔记 > 编程语言 > 正文

范围解析运算符枚举编译器特定的扩展?

如何解决《范围解析运算符枚举编译器特定的扩展?》经验,为你挑选了2个好方法。

在这个问题上,有一个答案表明:

您可以使用typedef使Color枚举类型可访问,而不指定它的"全名".

typedef Sample::Colour Colour;
Colour c = Colour::BLUE;

这听起来对我来说是正确的,但有人对它进行了投票并留下了这个评论:

在枚举上使用范围解析运算符::(在"Color :: BLUE"中)是特定于编译器的扩展,而不是标准C++

真的吗?我相信我已经在MSVC和GCC上都使用了它,尽管我不确定.



1> Ferruccio..:

我尝试了以下代码:

enum test
{
    t1, t2, t3
};

void main() 
{
    test t = test::t1;
}

Visual C++ 9使用以下警告编译它:

警告C4482:使用非标准扩展名:枚举'test'用于限定名称

看起来不像是标准.


注意:它不是C++ 98的标准.它是C++ 11的标准.

2> Drew Dormann..:

那不标准.

在C++ 11中,您将能够使用枚举类声明制作带范围的枚举.

使用预C++ 11编译器来定义枚举,您需要在结构或命名空间内定义枚举.


注意:在C++ 11中,您也可以使用作用域的非`类``枚举.你只是不要像使用`enum class`一样来限制它们.
推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有