我想采用从C++模拟node.js中的EventEmitter机制,只要求能实现显式的回调注册和显式回调触发。
有关node.js中的EventEmitter解释和用法在此处
我主要想实现一个简化版的事件类,能够调用emit显式的触发事件就够了。
这个类主要有2个方法
一个是注册回调函数:
on(name,callback,callback_args);
一个是触发回调函数:
emit(name);
或者
emit(name,callback_args);
但是这里的问题是注册回调函数时,回调函数可能有多个参数,触发回调函数时也可以带参数
这里该怎么实现呢?
一点一点来吧,C++做这件node.js里看来很普通的事情需要费不少功夫。
假使我先不存储这个回调函数,我想以invoke(func, args)的方式达到调用func(args)的效果,我需要这么做:
Output: 33.14
如果你想要保存args...和func以备以后调用,那么你需要把args...保存起来,在C++里面推荐的方式是
std::tuple<Args...>, 然后你在从tuple里取出来的时候需要一个generator,然后调用func。