C++ 17:仍然使用枚举作为常量?

Top*_*ort 9 c++ enums c++17

我习惯使用enum常量 - 它们可以快速编写,可以放在.h文件中,并且工作正常.

enum {BOX_LEFT=10, BOX_TOP=50, BOX_WIDTH=100, BOX_HEIGHT=50};
enum {REASONS_I_LIKE_ENUM_AS_CONSTANTS = 3};
Run Code Online (Sandbox Code Playgroud)

这不再是个好主意吗?

我认为有更好的理由选择枚举类(传统的枚举隐式转换为int;常规枚举将其枚举器导出到周围的范围),但这些是在这种情况下更喜欢旧枚举的原因.

我在一个关于静态constexpr int和旧式枚举的线程中看到旧式枚举更好,因为有了一个静态的constexpr成员,你必须在类外面声明它.但是这在C++ 17中显然不再适用,并且可能只适用于类成员.

什么是c ++ 17的首选方式?

Lig*_*ica 5

这是主观的.

然而,这总是滥用枚举.你没有列举任何东西; 你只是窃取了这个enum功能,以获得一些与任意整数值无关的东西,这些整数值并不是为了拥有自己的逻辑"类型".

这就是为什么enum class是不恰当的位置或者(因为,正如你所指出的,enum class 强制的性质enum应该是有,但你实际上并不需要).

由于不再有任何问题static constexpr int,我会使用它(或者constexpr inline int,或者本周的任何内容).

  • 滥用功能?在C++中!?:o (8认同)
  • 我会使用`constexpr inline`,但也许那就是我:) (3认同)
  • `constexpr inline const static register int`. (3认同)

归档时间:

查看次数:

545 次

最近记录:

6 年,9 月 前