我遇到了這個問題,其中保存了C++函數指針以及一組參數,以便在稍後調用它。調用代碼不知道函數的類型和參數。在我的應用程序中保存和調用函數指針和參數是非常關鍵的性能指標。接口應該是這個樣子:保存函數指針+參數供以後使用
void func(int a, char * b);
call_this_later(func, 5, "abc");
一個簡單的解決辦法是把所有的信息在一個仿函數,要求每個調用的函數不同的typedef。 C++ 11允許我使用可變參數模板來做到這一點,所以這沒問題。
由於調用函數的類型在調用點是未知的,因此似乎有必要爲這些函子創建一個虛擬基類,並使用虛函數調用調用函子。虛函數調用+堆分配的性能開銷太高(我正在儘可能少地使用匯編指令來實現這個習慣用法的邊界)。所以我需要不同的解決方案。
任何想法?
我相信`:: boost :: function`和`:: std :: tr1 :: function`完全符合@Hans不想做的事情。我認爲他們使用虛擬功能和動態分配。 – Omnifarious 2011-02-07 21:36:16