概述
//带一个参数的事件触发器
template<class PTR>
class CEvent
{
private:
typedef void (*Handle)(PTR);
public:
CEvent(Handle handle)
{
_handleVec.push_back(handle);
}
CEvent(){ };
void Reset()
{
_handleVec.clear();
}
CEvent& operator+=(Handle handle)
{
this->_handleVec.push_back(handle);
return *this;
}
CEvent& operator-=(Handle handle)
{
vector<Handle>::iterator it;
for (it=_handleVec.begin(); it!=_handleVec.end(); it++)
{
if ((*(it._Ptr))==handle)
{
this->_handleVec.erase(it);
break;
}
}
return *this;
}
void operator()(PTR pam)
{
Execute(pam);
}
private:
//触发执行事件
void Execute(PTR pam)
{
vector<Handle>::iterator it;
for (it=_handleVec.begin(); it!=_handleVec.end(); it++)
{
(*(it._Ptr))(pam);
}
}
//存储处理程序
vector<Handle> _handleVec;
};
最后
以上就是典雅航空为你收集整理的架构模式--C++类模板实现事件触发机制的全部内容,希望文章能够帮你解决架构模式--C++类模板实现事件触发机制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复