Показать сообщение отдельно
Старый 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)
 
Ответить с цитированием