【发布时间】:2019-01-31 17:11:16
【问题描述】:
我习惯于使用enum 作为常量——它们写起来很快,可以放在 .h 文件中,而且工作正常。
enum {BOX_LEFT=10, BOX_TOP=50, BOX_WIDTH=100, BOX_HEIGHT=50};
enum {REASONS_I_LIKE_ENUM_AS_CONSTANTS = 3};
这不再是个好主意吗?
我认为 reasons 更喜欢 enum 类(传统枚举隐式转换为 int;传统枚举将其枚举数导出到周围范围)很好,但在这种情况下,这些是更喜欢旧枚举的原因。
我在static constexpr int vs old-fashioned enum 的一个线程中看到旧式枚举更好,因为使用静态 constexpr 成员,您还必须在类之外声明它。但这显然在 C++17 中不再适用,而且可能只适用于类成员。
c++17 中的首选方式是什么?
【问题讨论】:
-
不确定如何最好地处理这个问题。我在这里接受了一个答案。我同意这些问题是相同的。这个稍早一些(2 小时!),回答稍早一些(1 小时!)。但我也喜欢另一个线程上的获胜答案,也许更好,因为它澄清了
static。 -
是的,不确定。我实际上在这里写了相同的答案,版主删除了我的答案,声称如果答案相同,我应该将问题标记为重复,所以我这样做了。另请参阅我(已删除)答案中的其他链接问题:Should
constandconstexprvariables in headers beinlineto prevent ODR violations? -
我刚刚点击了“这解决了我的问题!”它说这会将用户引导到另一个页面,并在此处阻止新的答案,这很好。