3

可能重复:
是否有理由使用枚举在 C++ 代码中定义单个常量?

我刚刚在一些旧代码中遇到了以下代码段,奇怪地使用了枚举:-

class MyClass
{
public:
  enum {MAX_ITEMS=16};
  int things[MAX_ITEMS];
...
} ;

这比 好,#define MAX_ITEMS 16但与 有什么不同static const int MAX_ITEMS=16;

回到记忆的迷雾中,我记得一些 C++ 编译器不允许你在类中初始化 const,而是需要一个单独的......

const int MyClass::MAX_ITEMS = 16;

...在 .cpp 源文件中。这只是一个旧的解决方法吗?

4

1 回答 1

3

这是用于在类定义中初始化数组的古老枚举黑客” 。

传统上,在 C++03 之前,不可能static const在类声明中初始化 a。由于数组声明在声明中需要一个编译时常量索引。enum hack被用作一种解决方法。

class A 
{
    enum { arrsize = 2 };
    static const int c[arrsize] = { 1, 2 };

};
于 2013-01-09T15:34:01.523 回答