0
我有一個函數指針向量(void (*)()
)表示您已經採取的操作列表。我怎麼才能彈出最後兩個,並將其放入一個函數指針並將其放回列表中?鏈接兩個函數指針
例子:
void link_last_two(std::vector<void (*)()> actions) {
if(actions.size() <= 1) return;
void (*first)() = actions.back();
actions.pop_back();
void (*second)() = actions.back();
actions.push_back([](){first(); second();});
}
使用'std :: function'而不是原始函數指針。 –
你可以使用一個黑客解決方案。如果您可以控制代碼,請使用'std :: function',正如@BasileStarynkevitch所建議的。 –
函數指針只是一個指針 - 函數機器碼所在的內存地址。 「第一」指向某個地址,「第二」指向某個地址;您希望新功能指向哪個地址?沒有現有的功能可以指向,而且您可能不會爲生成新的函數生成機器代碼並指出這一點。這就是爲什麼你應該使用別的東西來描述函數而不是指針。 std :: function是一個不錯的選擇。 – jkff