![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
с чем несогласен то?
насчёт прикола плюсов: это не прикол... это само совершенство... ;) Добавлено через 57 секунд ага... люблю этот язык ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Не соглашусь, что на языках с нэтивной поддержкой ФП невозможно писать. Можно и очень хорошо. На некоторых даже интересно. Но плюсы - не знаю, лично мне всё-таки нравиться дизайн и философия языка. Недоделан он, конечно, но, блин, хорош...
|
|||
|
||||
Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Уж если буст тянуть, то можно черезboost'овые сигналы связь с SDL сделать.
Примерно так:
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
![]() ![]() -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
![]() Насчёт boost::signals - немного недоделана либа: 1. Хорошо бы иметь возможность паблик-доступа на коннект и прайват - на вызов. Или типа того. 2. Очень неприятно упоминание о потонебезопасности в доках по либе ![]() |
|||
|
||||
Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
набросочно это можно решить так:
Это сообщение отредактировал(а) Mayk - 1.5.2007, 00:27 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
Ken |
|
||||||||||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 31.3.2007 Репутация: 2 Всего: 4 |
Nerezus, почему не хотите использовать event listener-ы в стиле Java? Это проще и не требует темплейтов и доп. библиотек. Например, допустим, вы создаете компонент Button. Хотите от него получить событие onClick (). Просто объявляем новый абстрактный класс (interface):
А к классу Button добавляем метод и член:
Класс который хочет ловить событие onClick () должен наследовать от ButtonListener и реализовать метод onClick (). А внутри одного из методов Button генерация onClick будет выглядеть так:
Регистрация обработчика уже будет выглядеть примерно как вы хотите:
Это сообщение отредактировал(а) Ken - 1.5.2007, 01:12 |
||||||||||
|
|||||||||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
Mayk, ну я немного по другому делаю - у меня шаблон для сигналов (юзающий бустовские, конечно) с дополнительным параметром - классом, для которого разрешён вызов сигнала.
Насчёт ивент-листенеров - в яве есть анонимные классы, в плюсах нет. Потому юзать ивент-листенеры наглой копией - не очень приятно. К тому же пропадает возможность биндинга и пр. приятных вещей. |
|||
|
||||
Ken |
|
|||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 31.3.2007 Репутация: 2 Всего: 4 |
Что означает "юзать ивент-листенеры наглой копией"? Не обязательно использовать анонимных классов. Если количество объектов от которых можем получать событий не очень много, то один класс-контроллер отвечающий за логику приложения бывает достаточным, если много, то можно создавать разные контроллеры обрабатывающие события. Мне нравится простота и эффективность этой схемы, она работает без дополнительных затрат (зачем boost, особенно в встроенных системах только из за этого). Это сообщение отредактировал(а) Ken - 1.5.2007, 09:18 |
|||
|
||||
nerezus |
|
||||||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 3 Всего: 43 |
Ken, оо, самый лучший совет ) Просто это со стороны структурного кода работать не будет, ну да ладно, ну первую часть нафиг. Спасибо. В C++ можно же при наследовании от 2х классов тип указателя на Child сделать указателем на Parent1(лисенер)? Ну вот и лучший вариант ) |
||||||
|
|||||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
В пиноте нэтив-роддержка. А в плюсах красивая эффектная реализация. ![]() Я не говорю, что обязательно, но без них очень неудобно. Бустовские вещи в данном случае гораздо более гибкое и красивое решение (boost::function, boost::signal, boost::bind, boost::lambda). + действительно в стиле плюсов. |
|||
|
||||
Ken |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 47 Регистрация: 31.3.2007 Репутация: 2 Всего: 4 |
Согласен с вами. Но программируя часто для встроенных систем и микроконтроллеров совсем неприятно увидеть как твой продукт становиться раздутым из за разных библиотек, поэтому если можно обойтись без них, то лучше использовать простые средства которые решают задачу. В любом случае нет ничего абсолютно классного, это одно из решений, для меня оно всегда работало эффективно.
Nerezus для струрного кода используйте указателей на функций как в начале показали товарищи.
Да. Это то же самое что реализация интерфейсов в Java (если все методы второго класса абстракные и класс не содержит свои поля). Можете наследовать не только от 2х ;) |
||||||
|
|||||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 24 Всего: 92 |
[offtop]Почему с нами?[/offtop] Не знаю. Встроенные системы, микроконтроллеры - ничем этим не занимаюсь ![]() + для многих ситуаций хватит STL-вского ФП. Впрочем, дело вкуса, конечно. |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
что за ситуации такие?
![]() я так понимаю речь о bind1st/2nd ![]() ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |