我试图想出代表下面的一个更好的方式可变数量的函数成员:集装箱用的参数
using InsBase0 = std::tuple<std::string, std::function<void()>>;
static const std::array<InsBase0, 1> ins0_bases = {{
{"NOP", 0x0},
}};
using InsBase1 = std::tuple<std::string, std::function<void(const std::string &)>>;
static const std::array<InsBase1, 7> ins1_bases = {{
{"INC", 0x0},
{"DEC", 0x0},
{"AND", 0x0},
{"OR", 0x0},
{"XOR", 0x0},
{"CP", 0x0},
{"SUB", 0x0},
}};
using InsBase2 = std::tuple<std::string, std::function<void(const std::string &, const std::string&)>>;
static const std::array<InsBase2, 6> ins_bases = {{
{"LD", 0x0},
{"ADD", 0x0},
{"ADC", 0x0},
{"SBC", 0x0},
{"JP", 0x0},
{"JR", 0x0},
}};
(完全人为的例子,假设功能代替0x0
和一些更理智像地图而不是数组或结构而不是元组)
上下文是这是一个汇编程序,所以我需要将指令映射到函数。
在一个完美的世界中,我希望能够将所有指令放入一个数组/容器中(使用额外的args
成员来表示函数所需的参数数量),但我会很高兴而不是与StructName0
一起复制定义
我会使用枚举而不是字符串的操作名称。当然,这需要在解析时在两者之间进行转换,但打字错误的可能性会降低。此外,你的查找可能会更快。 –
一种可能性,但我必须在某个点上从字符串转换... – LordAro
你能发布一个你试图用这个函数调用的函数的例子吗? –