C++ 如何打印枚举中在C+中相互依赖的值的名称+;

C++ 如何打印枚举中在C+中相互依赖的值的名称+;,c++,enums,stl,C++,Enums,Stl,我们的平台代码将从第三方库获取回调,回调函数将接收两个参数。第一个参数是一个枚举A的一部分,它表示将作为第二个参数出现的五月枚举之一。比如说, enum a = {fruit, book, bike, car, sport, none} enum f = {apple, mango, banana, none}; enum bo = {C, C++, Java, Python, none}; enum bi = {herohonda, lml, none}; enum c = {camry, c

我们的平台代码将从第三方库获取回调,回调函数将接收两个参数。第一个参数是一个枚举A的一部分,它表示将作为第二个参数出现的五月枚举之一。比如说,

enum a = {fruit, book, bike, car, sport, none}
enum f = {apple, mango, banana, none};
enum bo = {C, C++, Java, Python, none};
enum bi = {herohonda, lml, none};
enum c = {camry, carrola, altima, nissan, honda, none};
enum s = {cricket, tennis, volleyball, none};
回调中的第一个参数表示枚举a中的一个值。第二个参数依赖于第一个参数。如果第一个参数是水果,第二个参数将是枚举f中的一个值。若第一个参数是book,那个么第二个参数将是enum bo中的一个值

现在我们只是直接打印从回调中获得的值,所以这些值将是1、0或2、1之类的值。但通过查看数千条日志中的这些数字,很难立即知道。我想打印名称而不是值。一种方法是对参数使用if条件,但它不是有效的。我打算用地图。但我想不出地图上的第二个参数是什么。映射中的第一个参数(键)将表示回调中的第一个参数。如何在映射中定义第二个参数(值)。它将是一个包含字符串(表示回调的第一个参数的字符串)的结构,以及一个包含回调的第二个参数和字符串表示的映射,如下所示

map <int second_parameter, string second_string> second;
struct map_struct
{
    string first_string;
    map <int, string> second;
};
map<int first_parameter, map_struct *stru> map;
map秒;
结构映射
{
第一个字符串\u字符串;
地图第二;
};
地图;

这是否正确,或者是否有其他有效的方法来打印姓名而不仅仅是数字。

您可以创建一个查找表,最简单的形式可能是这样的:

std::string enums[5][6] = {
    {"apple",     "mango",   "banana",     "none"                    },
    {"C",         "C++",     "Java",       "Python", "none"          },
    {"herohonda", "lml",     "none"                                  },
    {"camry",     "carrola", "altima",     "nissan", "honda", "none" },
    {"cricket",   "tennis",  "volleyball", "none"                    }
};

像这样使用大量枚举有点代码味道-您可能需要重新考虑您的设计。@NeilButterworth:这些值来自第三方供应商库。我们无法控制它们。我会为每个枚举创建一个映射。谢谢Steeve。这是一个简单的解决方案。