我们的平台代码将从第三方库获得回调,回调函数将收到两个参数。第一个参数是一个枚举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中的一个值。第二个参数取决于第一个参数。如果第一个参数是fruit,则第二个参数将是enum f中的值之一。如果第一个参数是book,则第二个参数将是enum bo中的值之一。
现在我们只是直接打印我们从回调中得到的值,所以这些值将是一些东西,如1,0或2,1,但很难通过在数千个日志中查看这些数字来立即知道。我想打印名称而不是值。一种方法是使用参数的条件,但效率不高。我计划使用地图。但我无法想到地图中的第二个参数是什么。映射中的第一个参数(键)将表示回调中的第一个参数。如何在地图中定义第二个参数(值)。它是一个包含字符串(表示回调的第一个参数的字符串)的结构,以及一个包含回调的第二个参数和字符串表示的映射,如下所示。
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;
这是正确的还是有其他有效的方式来打印名称而不仅仅是数字。
答案 0 :(得分:1)
你可以创建一个查找表,最简单的形式可能是这样的:
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" }
};