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

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

УК>Затем, что во многих ситуациях я хочу оперировать с данными контрола в коллбеке ивента,
Для этого есть void*

УК>например сделать кнопку неактивной,

Вы собираетесь делать кнопку неактивной в callback в момент её нажатия? Вы понимаете, к чему это скорее всего приведёт?

УК> получить текст из едитбокса,

Зачем для этого указатель на кнопку?

УК> отписаться от события итд итп.

Т.е. вы собираетесь вызвать Button::RemoveOnButtonPress() метод внутри callback'а? Я вас правильно понимаю? Вы хорошо подумали?

УК> Положить можно в void, только зачем заставлять пользователя библиотеки реализовывать стандартную для любой UI библиотеки машинерию?

Заставлять не надо и это не стандартная схема.

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

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

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

BFE>>Много. Сотни мегабайтов, наверное.
УК>А что не гигабайтов? Ты похоже далёк от разработки совсем. Судя по всему, что тебя удивляют стандартные UI паттерны, которые есть в любой UI библиотеке, начиная от MFC и заканчивая HTML DOM с его addEventListener, вероятно ты не настоящий сварщик.

Меня эти "стандартные" UI паттерны не удивляют, мне от них плакать хочется.

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


УК>Ты прикалываешься? Это же очевидно UI библиотека, у неё не может быть статических обработчиков, так как они задаются пользователем библиотеки (в рантайме). Боже, какой же ты дремучий.


Нет, вы не обзывайтесь, а давайте объясните зачем там список и почему нельзя обойтись одним callback'ом. Особенно мне интересно, что, по вашему мнению, будет при вызове метода RemoveOnButtonPress изнутри callback'а (или как вы там собираетесь отписаться от события)?
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.