Generalized FUNCTORS презентация
Содержание
- 2. Ги-ги… Додаткова інформація: В презентації 32 сторінки
- 3. Майже гасло “Особливо розумні” технології призначені для досягнення простоти. (original: Clever
- 4. Що воно таке? Узагальнений функтор – це будь-який виклик процедури, що
- 5. Для чого? Узагальнені функтори дозволяють зберігати виклики процедур у вигляді значень,
- 6. The Command Design Pattern Gamma, Erich, Richard Helm, Ralph Johnson, and
- 7. Що це дає? Модуль, що здійснює виклик не тільки не знає
- 8. Застосування // Resize the window window.Resize(0, 0, 200, 100);
- 9. В реальному житті Розробка інтерфейсів користувача окремо від самих програм (skinnable)
- 10. Generalized callback void Foo(); void Bar(); int main() { void
- 11. Ті, що підтримують operator() (callable) Функції Вказівники на функції Відсилки на
- 12. Скелет Functor’а Клас Functor має поліморфну реалізацію, але це сховано всередині
- 13. Починаємо реалізовувати Перша реалізація – перша проблема class Functor { public:
- 14. Виходить без шаблонів ніяк? template <typename ResultType> class Functor { public:
- 15. Ну а де аргументи? Ми не маємо морального права накладати обмеження
- 16. Так теж не годиться // Functor with no arguments template <typename
- 17. Списки типів <typename ResultType, class TList> class Functor { ...
- 18. Але й списки не ідеальні template <typename R> class FunctorImpl<R, NullType>
- 19. Сам пан Functor template <typename R, class TList> class Functor {
- 20. Маленька хитрість template <typename R, class TList> class Functor { typedef
- 21. Реалізація operator()’а template <typename R, class TList> class Functor { ...
- 22. В чому фокус? Functor<double, TYPELIST_2(int, double)> myFunctor; double result = myFunctor(4,
- 23. Робота з функторами template <typename R, class TList> class Functor {
- 24. Так багато коду для одного конструктора template <class ParentFunctor, typename Fun>
- 25. … готуємо конструктор FunctorHandler(const Fun& fun) : fun_(fun) {} FunctorHandler* Clone()
- 26. Нарешті вимучили наш конструктор template <typename R, class TList> template <typename
- 27. Тестуємо – все красиво #include “Functor.h” #include <iostream> struct TestFunctor
- 28. Не просто красиво – дуже красиво Працюємо з функторами Працюємо з
- 29. Вказівники на методи об'єктів Є певні нюанси (але вони дещо виходять
- 30. Бонуси Зв'язування певних атрибутів (до початку виклику ми не тільки вкажемо
- 31. Де це знайти? loki Посилання: http://sourceforge.net/projects/loki-lib Для презентації використовувалась версія
- 32. Ніби кінець… Спасибі за увагу Буду вдячний, якщо питання Ви
- 33. Скачать презентацию
Слайды и текст этой презентации