好的,我有一个回调列表,Callback定义如下:
typedef std::function<void(Event*)> Callback;
现在如果我尝试通过
从该列表中删除对象 callbackBindings[index].remove(callback);
我得到了
错误100错误C2248:'std :: function&lt; _Fty&gt; :: operator ==':无法访问类'std :: function&lt; _Fty&gt;'中声明的私有成员D:\ Program \ 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;
答案 0 :(得分:2)
您无法比较std::function
个对象的相等性。您必须通过其他方式删除它们,例如通过索引或迭代器(您必须在保存回调时存储),或通过关联容器中的映射键。
(例如,假设您插入到本地指定为[](Event*){}
的回调。没有机制或逻辑来判断是否应该将任何两个这样的表达式视为“相等”。)