[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

g++ pthreads WinThreads



Hi.

Я пишу CWinThread-интерфейс к LinuxThreads, и возникла сложность:
есть две функции
bool CWinThread::CreateThread(...);
int CWinThread::Run();

Run -- это "main" новой нитки, CreateThread -- функция, запускающая thread.
Соответственно в CreateThread очень хочется вызвать 

pthread_create(&pth,&pth_attr,(void*)&CWinThread::Run),NULL);

на что я получаю:
CWinThread.cpp: In method `bool CWinThread::CreateThread(long unsigned int = 0, unsigned int = 0, void * = 0)':
CWinThread.cpp:14: converting from `int (CWinThread::*)()' to `void *'
CWinThread.cpp:14: ANSI C++ forbids implicit conversion from `void *' in argument passing
make: *** [CWinThread.lo] Error 1

Это как-бы две ругани. Второй не нравится преобразование к (void*), и на это,
в принципе, можно забить до поры до времени, но с первой-то что делать?

Если перобразование к (void*) убрать то выйдет:
CWinThread.cpp:14: converting from `int (CWinThread::*)()' to `void * (*)(void *)'

Если абстрагироваться, то вопрос в том, как сообщить функции из некоторого 
класса в качестве аргумента указатель на (нестатическую) функцию из того же
класса.

Спасибо,
-- 
Alexander Kotelnikov
Saint-Petersburg, Russia



Reply to: