我有一个填充了回调函数的向量,我想在添加之前检查该函数的回调是否已经存在。我不知道它是否甚至可以工作,到目前为止它甚至没有编译。
vector<std::function<void(void*)>> _callbacks;
void Event::RegisterCallback(std::function<void(void*)> callback)
{
if (callback == NULL)
return;
vector<std::function<void(void*)>>::iterator it = std::find(_callbacks.begin(), _callbacks.end(), callback);
if (it == _callbacks.end())
{
_callbacks.push_back(callback);
}
else
{
//print error
throw;
}
}
这会产生一个编译错误:alorithm(805) 中的“重载分辨率选择删除的运算符'=='”。这与 find 函数调用有关。
我如何让它工作,它甚至会正确地比较对同一方法的函数调用吗?
谢谢