Re[11]: Исповедь C++ника
От: B0FEE664  
Дата: 24.12.20 11:31
Оценка:
Здравствуйте, Умака Кумакаки, Вы писали:

УК>>>тайпдеф на обработчик события?

BFE>>А зачем там передавать указатель на кнопку?
УК>чтобы в обработчике событий знать, от кого пришёл ивент
Зачем? К тому же, если эти данные нужны, то их можно положить в то, что скрывается за void*.

УК>>>Тривиальная реализация publish/subscribe?

BFE>>Где там publish?
УК>функция NotifyAll это publish, AddOnButtonPress — subscribe, RemoveOnButtonPress — unsubscribe
NotifyAll это publish? У меня о publish функциональности несколько другое представление. publish — это то, что можно перечислить внешними методами в неком сторедже. Ну да не важно.

УК>>>Или каррирование частичное применение? Код вообще прозрачный, я в детстве такой писал после пары лет изучения крестов. Учитывая то, что это C++98, на C++17 всё будет выглядеть гораздо лаконичней.

BFE>>Прозрачный? Это с void* код прозрачный? И что же скрывается за void*?
УК>любой пользовательский контекст.

Вообще-то void* — это нечто прямо противоположное к прозрачному, это полностью скрытые данные или интерфейсы о которых ничего не известно.

УК>Если честно, твои вопросы меня озадачивают, ты вообще сколько кода читал/писал за свою жизнь?

Много. Сотни мегабайтов, наверное.

А вот вы пишите, что это тривиальная реализация. Тогда может объясните, зачем там динамический список обработчиков? Ведь такой список обработчиков имеет смысл только при динамическом изменении этого списка, так как иначе можно просто задать один статический обработчик в котором последовательно и явно в коде написать вызовы всех тех кто хочет быть подписан на эти вызовы. Т.е. один callback в котором просто вписаны вызовы всех других. Если же нужен именно динамический список, тогда может быть вы можете указать на задачу, где у кнопки в рантайме меняется список обработчиков у одной и той же кнопки, причём так, что список этих обработчиков не может быть составлен заранее?
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.