是的,这是怎么做到的?
我查找的东西具有非常具体的定义功能。首先,我不知道如何使用va_arg
列表调用该函数。对于两个人,我不知道它应该是什么样子。
我希望能够做到
event.register(func, arg1, arg2, arg3, ...);
对于任何不使用模板的函数,就像std::thread
一样。
我该怎么做?
答案 0 :(得分:0)
解决
class Event
{
list<function<void()>> functions;
public:
Event()
{
} //Event
template<typename T, typename... Args>
void reg(T& func, Args... args)
{
functions.push_back(bind(func, args...));
} //reg
void execute()
{
for (auto& func : functions)
{
func();
} //for
} //execute
};
=)
Event event;
event.reg(test, 2, 2.5);
event.reg(*[](int n, const char* foo){ cout << n << " " << foo << endl; }, 5, "rawr");
event.execute();