Форум программистов «Весельчак У»
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
Начало
Наши сайты
Галерея
Весельчак У
Наша Вики
Хранилище
Проекты
Правила
Правила форума
Правила русского языка
Помощь
Поиск
Календарь
Почта
Войти
Регистрация
Форум программистов «Весельчак У»
>
Учимся программировать
>
Начинающим
(Модератор:
Sla
) > Тема:
callback обертка метода
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: callback обертка метода (Прочитано 5286 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист
Offline
callback обертка метода
«
:
06-12-2009 08:52 »
как можно передать апи функции в качестве аргумента ( например wndProc ) вместо callback функции метод с привязкой к объекту класса ?
зы чтобы вместо хранения данных между вызовами callback f. в глобальном контексте они хранились в объекте
Записан
1n c0de we trust
RXL
Технический
Администратор
Offline
Пол:
Re: callback обертка метода
«
Ответ #1 :
06-12-2009 15:17 »
Создай функцию-обертку.
Записан
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
x77
Команда клуба
Offline
Пол:
меняю стакан шмали на обратный билет с Марса.
Re: callback обертка метода
«
Ответ #2 :
07-12-2009 13:35 »
метод передать нельзя. но в саму callback-функцию (как правило имеющую один-два целочисленных параметра) всегда можно передать ссылку на объект (который есть пойнтер, как известно) и далее всегда можно подставить под этот пойнтер объект нужного типа и в итоге работать с ним из callback - функции.
но в целом подобный затрах говорит о неправильно спроектированном приложении, ибо с точки зрения великого ДАО событие объекта (сиречь event) - это и есть callback - функция. и либо мы юзаем методы в эвентах, либо регулярные процедуры в callback-функциях, на практике женить эти две вещи мне лично пришлось только один раз: когда я писал ООП-обёртку вокруг отлаженного sax-парсера, и мне было влом переписывать парсер с нуля - я просто инкапсулировал его в свой объект и вышеописанным способом дёргал свои эвенты при срабатывании селекторов.
Записан
я люблю shelek.ru
lapulya
Молодой специалист
Offline
Re: callback обертка метода
«
Ответ #3 :
07-12-2009 15:48 »
Mayor
, безусловно
,
это нужно делать
,
и это делается так
:
class A
{
public void f() {}
public static void f(void * obj);
}
void A::f(void * obj)
{ A * a = (A*)obj; a->f(); }
void main()
{
A * a = new A();
API_Function1(A::f, (void *)a);
API_Function2(A::f, (void *)a);
API_Function3(A::f, (void *)a);
}
«
Последнее редактирование: 07-12-2009 16:29 от Sel
»
Записан
С уважением Lapulya
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Форум программистов «Весельчак У»
>
Учимся программировать
>
Начинающим
(Модератор:
Sla
) > Тема:
callback обертка метода
Загружается...