C ++ 11延迟函数调用

时间:2014-03-14 06:48:10

标签: c++ c++11 variadic-templates variadic-functions

我为游戏引擎创建事件管理器。 我有一些问题。

现在,我的程序可以像这样做:

RegCallback(E_EVSYS_MSG::MATHSQRT, &test_it, &test::bar, 10, 100.0);
RegCallback(E_EVSYS_MSG::MATHSQRT, &SomeCallback, 10.0f, 100);

CallEvent(E_EVSYS_MSG::MATHSQRT);

但是,它不对。 我用std :: bind中的参数存储函数:

std::function< void() > m_Func;
m_Func = std::bind(pmfn, ref, std::forward<ARGS>(data)...);

所以...我不知道如何分离存储函数ptr和参数。

它必须像这样工作:

RegCallback(E_EVSYS_MSG::MATHSQRT, &test_it, &test::bar);
RegCallback(E_EVSYS_MSG::MATHSQRT, &SomeCallback);

CallEvent(E_EVSYS_MSG::MATHSQRT, 10, 100.0);

如何实现这一目标? std :: bind返回模板化的std :: function,这很难将它保存在vector中。 基本上,所有回调仅在ptr与函数之间有所不同(它可能是方法或顺序函数)。并且所有回调都具有相同的参数(但参数中的数据不同)。

P.S测试程序的完整代码:http://pastebin.com/Rdyy5LGU

0 个答案:

没有答案