若无特殊说明,则为原创文章。转载请注明:关门2000的博客(www.gscience.cc)

Event类:

template <typename  ...Args> class Event
{
private:
	//handlers
	std::list<std::function<void (Args...)>> functions;

public:
	//add handler
	void operator += (std::function<void(Args...)>&& newFunc)
	{
		functions.emplace_back(newFunc);
	}

	//call handlers
	void operator ()(Args... args)
	{
		for (auto& func : functions)
		{
			func(args...);
		}
	}
};

使用方法:

//新的Event,参数为两个int
Event<int, int> testEvent;

//添加一个Handler
testEvent += [i1,j1](int i2, int j2) { };

//触发事件
testEvent(100, 100);

我之所以准备建立这个网站就是为了记录我学习的一个过程,并同时给予他人一些微不足道的帮助。若我的文章对您有用,您可以给我打赏,当然我的文章也会有很多不足,还请大家多多指教。顺便,欢迎大家加入我的多年无人管理的QQ群:429122148,希望能和真正的高人进行交流。




打赏

发表评论