问题标签 [enum-class]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++11 枚举类实例化
我遇到了以下形式的枚举类变量实例化,它在 VS2012 下编译时没有任何警告或错误:
此外,将X(id)
作为参数发送给期望编译的 X 类型参数的函数。我不确定结果是否总是正确的,或者它只是一个奇怪的编译器行为。
但是,尝试执行X myX(id);
上述操作会导致编译错误:
错误 C2440:“正在初始化”:无法从“UINT32”转换为“X”。转换为枚举类型需要显式转换(static_cast、C 样式转换或函数样式转换)。
阅读 C++11 标准并没有帮助我理解。所以我有两个关于这个问题的问题:
- 是否可以构造一个以整数类型作为参数的枚举类对象?
- 如果 1 为真,为什么
X myX(id)
不起作用?
enum-class - 如何在枚举中定义标点符号?
我使用斯坦福 POSTagger,我想将枚举定义为:
如何将标点符号定义为枚举变量?
c++ - 扩展枚举类
我有枚举课,说
现在我想添加一些取决于参数 ie 的成员var3(int)
。好的,这不是枚举,所以我想通过普通类来改变它,但我的目标是让旧代码(Enum::var1
作为类型的值Enum
)可以编译。
我试图这样做(让我们暂时忘记var3
,它将是静态函数):
但它不会编译,因为 Enum 的类型不完整。
我不能在课后声明它,因为它在标题中,所以它不适用于多个 cpp。此外,在这里有公共构造函数并不是一个好主意。
有什么想法吗?
c++ - 什么是枚举类,我为什么要关心?
对于从未写过一行 C++11 并且目前还没有机会使用 C++11 编程的人,你能用一小段话告诉我:
什么是“枚举类”,我们为什么需要它?
c++ - 具有类成员和 constexpr 链接时优化的 C++11 枚举
在我的项目中,我有很多枚举需要具有与枚举成员关联的附加属性以及与枚举类型关联的辅助静态方法。
据我所知,标准枚举类 MyItem {...} 是不可能的,因此对于我项目中的每个枚举类,我都有一个辅助类 MyItemEnum,它封装了这些辅助静态方法并实例化了本身,这样我就可以访问他们的方法以获得额外的属性。
下面举个例子(尽可能简化,但我相信要讨论的所有功能都保留在那里)。
我的项目.h
我认为含义很明显,我不需要在此处提供 .cpp 部分...当我需要访问扩展功能时,我使用 MyItem 作为要在接口和 MyItemEnum 中传递的参数。
我的第一个问题是,上面的方法可以吗,还是我应该考虑完全不同的东西?
我的第二个问题涉及我尝试使用 constexpr 对这个枚举进行优化:
它可以编译,但显然 constexpr 没有机会被使用,因为如果我访问:
所以编译器不知道 Item1 用什么值来实例化。 在链接时间优化期间,上面的表达式是否有可能被评估为 constexpr? 或者我可以使用
这将激活 constexpr 编译时优化,但我担心在某些情况下,当 constexpr 无法在编译时评估时,编译器将不得不创建 MyItemEnum 的本地实例(而不是使用对单个全局的引用静态实例)并且我担心这可能会导致性能损失(我的真实枚举具有比单个成员更多的属性,因此本地实例化可能需要一些时间?)。这是一个合理的担忧吗?
c++ - 定义枚举后赋值
我是 C++ 尤其是 C++11 的新手,所以既然我现在必须使用它,就出现了一些关于“枚举”和“枚举类”的问题:
我可以在声明枚举后赋值吗?
我可以为数字赋值吗?(例如:Myenum::0 = 2)
当使用结构或类作为基础类型时,枚举类如何工作?
枚举中的条目会是结构/类的有效实例吗?
我在搜索主题时发现了这些链接:
如您所见,其中留下了一些问题。
c++ - C++11,枚举类,使用 g++ 的未定义引用,使用 clang++
我使用了新的 C++11“枚举类”类型,并在使用 g++ 时观察到了“未定义的引用”问题。clang++ 不会发生这个问题。我不知道我做错了什么还是 g++ 错误。
重现问题的代码是:(4 个文件:enum.hpp、enum.cpp、main.cpp 和 Makefile)
和...
和...
和Makefile...
当我使用 g++ 时,我得到:
但是使用 clang++ 一切都很好(没有编译错误)。
欢迎任何解释,因为我在这里迷路了。
谢谢!:)
关于我的配置:
c++ - 枚举类与枚举或类有何相似之处?
该类型enum class
是完全独立于传统类的,还是其实现相似?如何enum class
工作?我问的原因是因为我不明白它如何同时与类和枚举相似。我假设枚举类不能有构造函数或内部方法?
c++ - 对基于范围的for循环的误解?
当我尝试编译以下代码时发生编译器错误:
BinaryInstructions
这个枚举类是:
我应该被允许使用枚举类中的项目“做一个”基于循环的范围吗?或者我是否巧妙地误解了基于 for 循环的范围是用于搜索数组的内容而不是枚举类之类的东西?
我也尝试过:创建实例并在实例中搜索:
但没有雪茄......提前谢谢,
c++ - 枚举类“无法转换为无符号整数”
我有一个这样的枚举类:
我正在尝试在这样的 switch 语句中使用枚举的成员:
(unsigned int)
当基础类型已经是 时,为什么需要强制转换unsigned int
?