Сравнение объектов std :: tr1 :: function <>
Я пытался реализовать C # -подобную систему событий в C ++ с помощью шаблонов функций tr1, используемых для хранения функции, которая обрабатывает событие.
Я создал вектор, чтобы к этому событию можно было подключить несколько слушателей, т.е.
vector< function<void (int)> > listenerList;
Я хотел бы иметь возможность удалить обработчик из списка, чтобы остановить слушателя, получающего события.
Итак, как мне найти запись в этом списке, которая соответствует данному слушателю? Могу ли я проверить, относится ли объект «функция» в списке к определенной функции?
Спасибо!
РЕДАКТИРОВАТЬ: Изучив подход boost :: signal, кажется, что он, вероятно, реализован с использованием системы токенов, как некоторые из вас предложили.Вот некоторая информация об этом, Наблюдатель сохраняет объект «Соединение», когда он присоединяется к событию, и этот объект соединения используется для отключения при необходимости. Таким образом, похоже, используете ли вы Boost или катите свой собственный с tr1, основной принцип тот же. то есть это будет немного неуклюже :)