C++ 中的 Java 样式枚举

java style enums in c++

本文关键字:枚举 样式 Java 中的 C++      更新时间:2023-10-16

在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"];
}

免责声明:我还没有编译这个。我可能搞砸了语法。