use*_*874 10 c++ enums scope namespaces
我想用基本的数学运算声明一个枚举如下:
enum Operations
{
div,
mul,
add,
sub
};
Run Code Online (Sandbox Code Playgroud)
但是编译器抱怨这个声明,因为div是C++中的保留关键字.我怎样才能覆盖它?还是有任何解决方案?
这是错误消息:
错误:'div'重新声明为不同类型的符号/usr/include/stdlib.h:158:错误:先前声明'div_t div(int,int)'
jua*_*nza 22
div
不是关键字,而是标准库函数,声明在stdlib.h
或可能在cstdlib
.
最简单的解决方案是使用不同的标识符.否则,您可以使用范围枚举:
enum class Operations
{
div,
mul,
add,
sub
};
Run Code Online (Sandbox Code Playgroud)
这将使枚举的值的Operations
范围(Operations::div
,Operations::mul
等等)
因为div
是一个声明的函数cstdlib
,并且未映射的枚举的名称可以省略为全局.这意味着你不能使用div
作为枚举.
在C++ 11中,为这种情况引入了范围枚举
enum class Operations
{
div,
mul,
add,
sub
};
Run Code Online (Sandbox Code Playgroud)
然后你就可以使用了 Operations::div