无法在枚举中声明"div"
Can't declare "div" in enum
我想声明一个具有基本数学运算的enum,如下所示:
enum Operations
{
div,
mul,
add,
sub
};
,但是编译器抱怨这个声明,因为div在c++中是一个保留关键字。我怎样才能重写它?或者有解决办法吗?
错误信息如下:
错误:'div '被重新声明为不同类型的符号/usr/include/stdlib.h:158:错误:先前声明的'div_tdiv(int, int) '
div
不是关键字,而是一个标准库函数,在stdlib.h
中声明,也可能在cstdlib
中声明。
enum class Operations
{
div,
mul,
add,
sub
};
这将把枚举的值置于Operations
范围(Operations::div
, Operations::mul
等)
因为div
是在cstdlib
中声明的函数,并且可以省略未作用域枚举的名称为global。这意味着不能使用div
作为枚举。
在c++ 11中,为这种情况引入了范围枚举
enum class Operations
{
div,
mul,
add,
sub
};
,然后可以使用Operations::div
您可以创建一个新的命名空间:
#include <stdlib.h>
namespace a
{
enum Operations
{
div,
mul,
add,
sub
};
}
int main()
{
a::div;
return 0;
}
在c++中使用cstdlib
而不是stdlib.h
。并且不要将std
命名空间导入到全局命名空间中(即不要使用using namespace std
)。那么在全局命名空间中就不会有div
与您的enum
发生冲突。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 为什么在定义函数之前先声明它
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- #ifdef和未声明的标识符
- 没有显式声明的int[]中的foreach
- 在基于范围的for循环中使用结构化绑定声明
- 在将变量声明为引用时,堆在释放后使用
- C++:无法访问声明的受保护成员
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 在函数内部的声明中初始化数组,并在外部使用它
- Visual Studio中的函数声明和函数定义问题
- c++类声明时,相同的例程,不同的成员变量类型
- 无法在枚举中声明"div"