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