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: