我已经阅读了几篇关于此的文章,但似乎无法通过示例代码准确找到我正在寻找的内容,如果有人能给我一些帮助,我将非常感激。
在我的标题中我有:
void addEvent(void (*func)(Pack *));
void triggerEvents(Pack * );
std::list<void(*)(Pack *)> eventList;
并在.cpp文件中
void DNetwork::addEvent(void (*func)(Pack *)){
eventList.push_back(func);
}
void DNetwork::triggerEvents(Pack * pack){
for (std::list<void (*)( Pack *)>::iterator it = eventList.begin(); it != eventList.end() ;it++ ){
(*it)(pack);
}
}
这适用于自由函数,但是当我尝试将成员函数添加到此列表时,我收到错误。有谁知道如何将成员函数(来自随机类对象)存储在指针内?
The simple解决方案是对函数/函数指针类型使用类型擦除,对此更简单的方法是使用std::function<>
:
std::list<std::function<void (Pack*)>;
然后你可以初始化function
具有自由函数或成员函数的对象(通过std::bind
将成员函数与调用它的对象绑定)甚至函数对象(提供operator()
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)