Re[4]: Универсальный указатель на функцию-член класса
От: Anton V. Kolotaev  
Дата: 07.10.02 08:12
Оценка: 2 (1)
Здравствуйте Ed.ward, Вы писали:

EW>в этом случае гораздо удобнее воспользоваться интерфейсами, заводишь структуру типа этой


EW>ну а теперь любой кто хочет обрабатывать события от CSkinedWnd должен наследоваться от CSkinedWndEventsSink и реализовать его методы. А в рантайме где надо приконнектится, а где надо отконнектится


В том то и прелесть замыкания, что наследоваться ни от кого и не надо. Достаточно совпадения сигнатур. На практике разница будет заключаться в том, что с замыканием можно использовать классы, написанные до CSkinedWndEventsSink. Без замыканий — придется для существующих классов делать еще один подкласс, который реализует эти методы CSkinedWndEventsSink.

Решение без замыканий плохо масштабируется: при большом числе sink'ов возникнут трудности с тем, как устроить их иерархию, а именно следующая проблема дизайна: определить удачный интерфейс sink'a.

EW>это упрощенный вариант обработки событий успользуемый в COM, так что можешь почитать для ознакомления с оригиналом


В отсутствие замыканий, конечно, приходится пользоваться sink'ами.

PS. Кстати, кто-нибудь знает причину, что помешало ввести замыкания в C++?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.