Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 25.08.2011, 21:54   #16
genroelgvozo
Нуждающийся
 
Регистрация: 08.05.2008
Сообщений: 87
Написано 9 полезных сообщений
(для 15 пользователей)
Ответ: Укозатель на метод класса

Хм, интересно
и таким образом функцию, которая принимает метод и обьект, можно сделать шаблонной, чтоб отойти от типизации
и тогда мне опять не понятно, а нафига boost?
(Offline)
 
Ответить с цитированием
Старый 26.08.2011, 01:58   #17
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Укозатель на метод класса

по поводу указателей и вообще реализации делегатов на С++
http://www.rsdn.ru/article/cpp/delegates.xml
(Offline)
 
Ответить с цитированием
Старый 26.08.2011, 02:21   #18
alcoSHoLiK
Дэвелопер
 
Регистрация: 17.01.2006
Сообщений: 1,512
Написано 78 полезных сообщений
(для 110 пользователей)
Ответ: Укозатель на метод класса

Как вариант, можно написать функцию-обертку, которая сохранит указатель this. Получится некое подобие замыкания для частного случая.

int net_thread_wrapper(void *data, net *this = 0) {
    static net *that;
    if (this) {
        that = this;
        // больше ничего не делаем, чтобы не вызвать изменений в this
        return 0;
    }
    return that->thread(data);
}
Первый раз вызываем функцию с двумя параметрами, в ней сохранится указатель на this. Затем можно передавать указатель на функцию в либу. Важно только, чтобы время жизни экземпляра, который был передан под видом this, было достаточным для целей либы.

net *instance = new net();
net_thread_wrapper(NULL, instance);
SDL_CreateThread(&net_thread_wrapper, &timeout);  

// ...

delete instance;
Наверняка понадобится каст, чтобы успокоить компилятор. На работоспособность этого подхода он не должен повлиять. Отпишись о результатах, пожалуйста.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 21:43.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com