【问题标题】:Odd use of enum as a constant [duplicate]奇怪地使用枚举作为常量[重复]
【发布时间】:2013-01-09 15:32:48
【问题描述】:

可能重复:
Is there a reason to use enum to define a single constant in C++ code?

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

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 源文件中。这只是一个旧的解决方法吗?

【问题讨论】:

  • 您可能记得无法初始化不是 static const 整数类型的东西,这是 C++11 之前的情况。

标签: c++ enums


【解决方案1】:

这是用于在类定义中初始化数组的古老"enum hack"

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

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

};

【讨论】:

猜你喜欢
  • 2020-05-24
  • 2019-12-02
  • 1970-01-01
  • 2014-10-18
  • 2012-11-15
  • 2017-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多