gpt4 book ai didi

c++ - 我如何解析 C++ 中的枚举?

转载 作者:搜寻专家 更新时间:2023-10-31 01:02:19 25 4
gpt4 key购买 nike

我有一个错误代码的 C++ 枚举(其中 30 个),并且有一个函数可以在出现问题时返回错误代码。有没有办法解析枚举以检查返回了哪些错误代码并提供解释?我知道这里可以选择 switch 语句,但正在寻找不同的东西以避免编写大量 switch 语句。

最佳答案

不,这是不可能的:枚举常量的名称是编译时的产物,它们在运行时不可用*

你可以制作一个map<string,MyEnumType>并用枚举名称及其值填充它。您可以使用“stringize 宏”来避免多次键入相同的值:

#include <iostream>
#include <string>
#include <map>
using namespace std;

#define ADD_ENUM_TO_MAP(m,x) m[#x]=x

enum MyEnumType {
quick, brown, fox, jumps, over, the, lazy, dog
};

int main() {
map<string,MyEnumType> nameToEnum;
ADD_ENUM_TO_MAP(nameToEnum, quick);
ADD_ENUM_TO_MAP(nameToEnum, brown);
ADD_ENUM_TO_MAP(nameToEnum, fox);
ADD_ENUM_TO_MAP(nameToEnum, jumps);
ADD_ENUM_TO_MAP(nameToEnum, over);
ADD_ENUM_TO_MAP(nameToEnum, the);
ADD_ENUM_TO_MAP(nameToEnum, lazy);
ADD_ENUM_TO_MAP(nameToEnum, dog);
cout << nameToEnum["fox"] << endl;
return 0;
}

Demo.

* 调试器通过编译器提供的符号表获取此信息。

关于c++ - 我如何解析 C++ 中的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27459117/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com