c++ - 从列表中删除回调函数?

标签 c++ list function callback

好的,我有一个回调列表,回调定义如下:

typedef std::function<void(Event*)> Callback;

现在,如果我尝试通过

从该列表中删除一个对象

callbackBindings[index].remove(callback);

我明白了

Error 100 error C2248: 'std::function<_Fty>::operator ==' : cannot access private member declared in class 'std::function<_Fty>' D:\Programme\Development\Visual Studio Ultimate 2012\VC\include\list 1592 1 D-Tris

如何从该列表中删除元素?

PS:CallbackBindings 看起来像这样:

static std::unordered_map<std::type_index, std::list<Callback>> callbackBindings;

最佳答案

您不能比较 std::function 对象的相等性。您将不得不通过其他方式删除它们,例如通过索引或迭代器(您必须在保存回调时存储),或通过关联容器中的映射键。

(例如,假设您插入了在本地指定为 [](Event*){} 的回调。没有任何机制或逻辑可以判断是否应考虑任何两个这样的表达式“等于”。)

关于c++ - 从列表中删除回调函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21863445/

相关文章:

c++ - 是否跳过了非具体类的虚拟类的基构造函数?

c++ - 如何审核我的 Windows 应用程序以进行正确的 Unicode 处理?

c# - 排序元组列表时的默认行为是什么?

python - 从列表中选择特定项目

c - 在 C 语言中无限猜谜游戏中记分

reactjs - 当reactjs中的return标签内的引​​用调用onClick函数时,如何将参数传递给onClick函数?

c - strlen 没有产生正确的数字并且 strncpy 不起作用

C++ F32 包含文件?

c++ - 如何在 unix 和 windows 中获取系统或用户临时文件夹?

python - 如何将元素列表附加到数据框的单个特征中?