我試圖想出代表下面的一個更好的方式可變數量的函數成員:集裝箱用的參數
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
你能發佈一個你試圖用這個函數調用的函數的例子嗎? –