gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:56:25 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com