ベクトルにコールバック関数が設定されており、追加する前に関数へのコールバックが既に存在するかどうかを確認したいと考えています。それが機能するかどうかはわかりませんが、これまでのところコンパイルさえしていません。
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 関数呼び出しに関連しています。
これを機能させるにはどうすればよいですか?関数呼び出しを同じメソッドと適切に比較することさえできますか?
ありがとう