![]() |
Модераторы: xvr |
![]() ![]() ![]() |
|
zaytsewa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 9.4.2009 Репутация: нет Всего: нет |
хочется передать в функцию run в качестве параметра указатель на другую функцию (другого класса)
реально ли это сделать?? в ф-ции run func_pointer не воспринимается как указатель на функцию((
Это сообщение отредактировал(а) zaytsewa - 9.4.2009, 14:59 |
|||
|
||||
azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
да
ну ясное дело ![]() дам пример, а там разберешся думаю
zaytsewa а вообще некоторые указатели на функции могут занимать больше памяти чем может содержать void*, так что лучше передавай указатель на указатель или заверни в структуру. Это сообщение отредактировал(а) azesmcar - 9.4.2009, 15:58 |
||||||
|
|||||||
X-3R1 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 28.4.2007 Репутация: нет Всего: 2 |
Я заметил:
где run:
Но ведь pthread_create ожидает функции void (*func)(void*), а не void (T::*func)(void*). Разве это скомпиллируется ? И ещё такой вопрос, как работать с сишными API которые ожидают указатель на функцию (signal, pthread_create etc) в ООП. Как-нибудь можно стандартными средствами языка C++ передать такой функции указатель на метод класса, а не указатель на статический метод или глобальную функцию ? Вроде бы знаю что boost::bind нечто подобное умеет. Это сообщение отредактировал(а) X-3R1 - 10.4.2009, 10:33 |
||||
|
|||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 84 Всего: 207 |
нет -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
X-3R1
если функция статическая - сработает Добавлено через 1 минуту и 4 секунды X-3R1 можно сделать статическую и передавать ей this. А из нее вызывать соответствующую мембер функцию |
|||
|
||||
X-3R1 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 28.4.2007 Репутация: нет Всего: 2 |
можно =)))
да ты прав =) Уже написал враппер:
|
||||
|
|||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
X-3R1
нет ![]() то что я написал это обходное решение того что тебе нужно. А передать мембер функцию как ThreadProc - нельзя. |
|||
|
||||
X-3R1 |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 28.4.2007 Репутация: нет Всего: 2 |
Это уже не важно, главное что теперь:
работает. И wrap_func не обязательно делать глобальной функцией или статическим методом. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |