![]() |
|
Модераторы: bsa |
![]()
|
|
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Abyx, я вроде весь нужный код-то выложил?
|
|||
|
||||
| Abyx |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 5 Всего: 10 |
наверное я был неправ.
результат bind имеет тип, отличный от void(*)(int) так что надо либо использовать указатель на функцию-член, либо шаблон, либо boost::function<void(int)> //или std::tr1:: |
|||
|
||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Abyx, а можно поподробнее как использовать шаблон для этого и буст?
|
|||
|
||||
| Abyx |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 5 Всего: 10 |
Elfet,
шаблон, это
c function это
вариант с шаблоном в общем случае оптимальнее |
||||
|
|||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
Я вот такой ещё вариант придумал)))
Добавлено через 2 минуты и 49 секунд Abyx, не совсем понял про вариант с шаблонами... |
|||
|
||||
| Abyx |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 5 Всего: 10 |
Elfet, у типа Handler в шаблоне будет тип результата bind()
|
|||
|
||||
| bsa |
|
||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Elfet, по хорошему, прежде чем браться за шаблоны неплохо бы было о них почитать немного...
Но я попытаюсь кратко объяснить... когда ты создаешь шаблон, то компилятор будет пытаться каждый раз при его использовании подстроить под конкретную ситуацию. Например, ты написал шаблон:
В твоем случае, мы задаем параметром шаблона тип объекта, к которому применим operator()(int). Т.е. когда ты пишешь так:
Функции вроде boost::bind (как и std::mem_fun, std::bind1st и пр.) создают функциональные объекты сложных типов (выглядят они жутко), о которых нужно знать только одно - у них есть operator(), который принимает необходимое количество параметром нужного типа. Использовать эти объекты вне шаблонных функций/методов - сущий мазохизм (да и неправильно это)... Но, можно воспользоваться boost::function, которая позволяет сформировать заранее тип функционального объекта, к которому будут автоматически приводиться все совместимые объекты (как реализовано - рассказывать не буду). |
||||||
|
|||||||
| Elfet |
|
|||
![]() Белый и Пушистый ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 3776 Регистрация: 2.4.2003 Репутация: нет Всего: 16 |
bsa, ооо! спасибо!
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |