freebsd53[/]# gcc -v
Using built-in specs.
Configured with: FreeBSD/i386 system compiler
Thread model: posix
gcc version 3.4.2 [FreeBSD] 20040728
Дело в том , что надо передать в качестве параметра фунцкции pthread_create ( &threadID, NULL, (void*(*)(void*))object->Start_Thread,NULL) необходимо передать указатель object->Start_Thread на нестатическую функцию-член класса, реализация котрой выглядит так:
void * cMyclass::Start_Thread ( void * ) {
pthread_setcanseltype...
pthread_setcancelstate...
/*реализация*/
}
Сам поток создается в конструкторе класса:
cMyClass::cMyClass () {
this->threadID = 0;
pthread_create ( &threadID, NULL, (void*(*)(void*))this->Start_Thread,NULL);
pthread_join ( threadID );
}
Дело в том, что компилятор выдает несоответствие типов:
g++ -c -Wall -O2 -I. prog.c -lpthread
prog.c: In constructor `cMyClass::cMyClass()':
prog.c:10: error: argument of type `void*(cMyClass::)(void*)' does not match `void*(*)(void*)'
*** Error code 1
можно как-то обойти это не используя статические функции-члены? Кто-нибудь решал подобную проблему?
Спасибо.