Как вариант, можно написать функцию-обертку, которая сохранит указатель
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;
Наверняка понадобится каст, чтобы успокоить компилятор. На работоспособность этого подхода он не должен повлиять. Отпишись о результатах, пожалуйста.