可能重复:
Is there a reason to use enum to define a single constant in C++ code?
我刚刚在一些旧代码中遇到了以下片段,奇怪地使用了枚举: -
class MyClass
{
public:
enum {MAX_ITEMS=16};
int things[MAX_ITEMS];
...
} ;
这比#define MAX_ITEMS 16
好,但与static const int MAX_ITEMS=16;
有什么不同?
重新回到内存的迷雾中,我记得有些C ++编译器不允许你在类中初始化consts,而是需要一个单独的......
const int MyClass::MAX_ITEMS = 16;
...在.cpp源文件中。这只是一个旧的解决方法吗?
答案 0 :(得分:3)
这是用于初始化类定义中的数组的古老 “enum hack” 。
传统上,在C ++ 03之前,无法在类声明中初始化static
const
。由于数组声明在声明中需要编译时常量索引。 枚举黑客 用作解决方法。
class A
{
enum { arrsize = 2 };
static const int c[arrsize] = { 1, 2 };
};