【发布时间】:2011-12-19 10:11:52
【问题描述】:
我有这个问题,其中保存了一个 C++ 函数指针,以及一组调用它的参数,以便以后可以调用它。调用代码不知道函数的类型和参数。在我的应用程序中,保存和调用函数指针和参数对性能至关重要。界面应如下所示:
void func( int a, char * b );
call_this_later( func, 5, "abc" );
一个直接的解决方案是将所有这些信息放在一个仿函数中,每个调用的函数需要不同的 typedef。 C++11 允许我使用可变参数模板来做到这一点,所以没关系。
由于函数的类型在调用时是未知的,因此似乎有必要为这些函数创建一个虚拟基类并使用虚拟函数调用来调用函数。虚函数调用 + 堆分配的性能开销太高(我正在用尽可能少的汇编指令推动实现这个习语的界限)。所以我需要一个不同的解决方案。
有什么想法吗?
【问题讨论】: