当前位置: 首页 > 知识库问答 >
问题:

C++17:仍然使用枚举作为常量?[副本]

左华灿
2023-03-14
enum {BOX_LEFT=10, BOX_TOP=50, BOX_WIDTH=100, BOX_HEIGHT=50};
enum {REASONS_I_LIKE_ENUM_AS_CONSTANTS = 3};

这不再是个好主意了吗?

我看到了更喜欢枚举类的充分理由(传统枚举隐式转换为int;传统枚举将其枚举数导出到周围的作用域),但在这种情况下,这些是更喜欢旧枚举的理由。

我在一个关于静态constexpr int vs老式枚举的线程中看到,老式枚举更好,因为对于静态constexpr成员,您还必须在类之外声明它。但这显然在C++17中不再适用,而且可能只适用于类成员。

共有1个答案

贺俊材
2023-03-14

这是主观的。

然而,这总是滥用枚举。你没有列举任何东西;您只是窃取枚举特性来获取一些与任意整数值无关的值,这些值并不打算具有自己的逻辑“类型”。

这就是为什么枚举类在这里也不合适(因为正如您所指出的,枚举类强制执行枚举的属性,这些属性应该存在,但您实际上并不需要)。

 类似资料:
  • 本文向大家介绍c# EnumHelper枚举常用操作类,包括了c# EnumHelper枚举常用操作类的使用技巧和注意事项,需要的朋友参考一下 测试代码如下: 调用方式: 其中的cb表示ComboBox对象,你可以替换成你的下拉框对象。

  • 枚举(enum)是定义一组命名常量的机制,用这种方式定义的常量被称作枚举常量 注:枚举常量的数据类型是整数 使用方法: 下面我们以文本语音转换为例子,说明一下枚举常量的使用方法。 首先我们在窗体上放入语音识别控件,按钮,通用对话框这些基本控件,来制作一个简单的语音文本朗读程序。 1 如果您使用过语音识别控件,就应该知道,使用这个控件的第一步就是先创建它,而创建命令的两个参数就是枚举常量,我们可以看

  • 主要内容:声明常量,实例,VB.Net打印和显示常量,声明枚举,实例常量指的是程序在执行过程中可能不会改变的固定值。 这些固定值也被称为文字。 常量可以是任何基本数据类型,如整数常量,浮点常量,字符常量或字符串文字。 也有枚举常量。 常量的处理方式与常规变量一样,只是它们的值在定义之后无法修改。 枚举是一组命名的整数常量。 声明常量 在VB.Net中,使用语句声明常量。 语句用于模块,类,结构,过程或块级别,以代替文字值。 语句的语法是: 其中, attribut

  • 问题内容: 通过阅读SCJP书籍,我在第1章“自测”中发现了类似的内容: 注意:代码编译正常。我不明白的是为什么我们可以从变量访问DOG,CAT或FISH常量。我认为(并且也写在书中)DOG,FISH,CAT是常量,其实现方式类似于。 所以,如果它们确实是静态的,为什么我们可以从中访问它们呢?最后一行是我熟悉的方式。 问题答案: 写作 和写作一样。也就是说,编译器将用其编译时类型Animal替换变

  • 问题内容: 在我的MySQL数据库中,有“ gender enum(’male’,’female’)”列 我创建了枚举“ com.mydomain.myapp.enums.Gender”,并在我的实体中定义了“性别”。 现在,我想将枚举类型保留在我的MySQL数据库中,但是当我启动应用程序时,我得到: 性别列在MyApp.Person中的列类型错误。找到:枚举,预期:整数 为什么是这样?这就像我用

  • 问题内容: 我正在查看公司其他部门维护的一些Java代码,顺便说一下,这是一些前C和C ++开发人员所维护的。普遍存在的一件事是使用静态整数常量,例如 除了缺少“最终”限定符外,这种代码也让我有些不安。我本来希望看到的是,从学校开始主要接受Java的培训,这会更像 但是,论点使我失望。为什么要比后者更好呢? 问题答案: 为什么要比后者更好呢? 这样做要好得多,因为它可以为您提供类型安全性并具有自记