C++ 中的 Java 样式枚举
java style enums in c++
在Java中,我可以像类一样使用枚举。例如,我可以创建枚举的构造函数,该构造函数接受一个值并初始化枚举的值和类静态函数 values(( 以列出所有枚举的值。
如何在 c++ 中暗示这一点?
有java代码:
enum EquationType {
LINE("LINE"), LINE3D("LINE3D"), BEZIER("BEZIER"), PLANE("PLANE");
EquationType(String curve_type) {
type = curve_type;
} //END: CurveType()
String type; // enum's member variable that store symbolic name of type (for utilite using)
public String get_type_string() {
return type;
} //END: get_type_string()
public static EquationType _bystring(String type) throws Exception {
for (EquationType value : values()) { // search by list of enum's values
if (value.get_type_string().equals(type.trim().toUpperCase())) {
return value;
}
}
} //END: _bystring()
} //END: enum EquationType
它创建具有 4 个成员(LINE、LINE3D、BEZIER、PLANE(的枚举。此枚举类类型具有通过字符串名称值返回枚举类型的函数,如 EquationType._bystring("PLANE"( 将返回 EquationType.PLANE。它使用 values(( 函数,该函数列出所有可能的枚举类型值。
C ++中有一些模拟吗?
#include <string>
#include <unordered_map>
enum EquationType {
LINE, LINE3D, BEZIER, PLANE
};
int main() {
std::unordered_map<std::string, EquationType> equationMap({
{"LINE", LINE},
{"LINE3D", LINE3D},
{"BEZIER", BEZIER},
{"PLANE", PLANE}
});
EquationType line = equationMap["LINE"];
}
免责声明:我还没有编译这个。我可能搞砸了语法。
相关文章:
- 不带大括号的枚举形式
- 枚举环境变量的惯用C++14/C++17方法
- 类似枚举的计算常量
- 如何正确实现和访问运算符的各种自定义枚举器
- 错误:从"int"到枚举c++的转换无效
- C++中构造函数中的枚举
- 访问在 C++ 结构中声明的枚举变量
- 枚举类'classname'的多重定义
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- typedef 枚举和枚举类有什么区别?
- 为什么我的开关/机箱在使用枚举时默认?
- 标准::可选枚举的比较运算符
- C++两个源文件之间共享的枚举的静态实例
- C++ 中的 Java 样式枚举
- 枚举类的 C 样式强制转换到基础类型 char 的引用
- 锈迹位域和枚举C++样式
- 从整数到枚举的首选转换样式 QEvent::Type
- 样式和枚举器
- 转换为枚举类型需要显式转换(static_cast、C样式转换或函数样式转换)
- 转换为枚举类型需要显式强制转换(static_cast、C样式强制转换或函数样式强制转换)枚举