Здравствуйте, Аноним, Вы писали:
А>Есть много книг где описываются threads, есть много книг где описываются классы, А>немогу понять можно ли создать thread используя функцию, член класса?
А>Например так:
А>_beginthreadex(NULL, 0, (void*)MyClass::FrameThreadProc, 0, 0, &thread); А>error C2664: '_beginthreadex' : А>cannot convert parameter 3 from 'int (void *)' to 'unsigned int (__stdcall *)(void *)'
А>или так:
А>_beginthreadex(NULL, 0, (unsigned)(void*)FrameThreadProc, 0, 0, &thread); А>error C2440: 'type cast' : А>cannot convert from 'int (__thiscall MyClass::* )(void *)' to 'void *'
На сколько я себе это представляю нет...
Для этого обычно используются функции фильтры (которые в классе обявляются как друзья)
или статические функции класса
class A;
void thread_filter(void* param)
{
A* a = (A*)param; a->Thread();
}
class A {
friend void thread_fileter(void* param);
private:
void Thread()
{
// тело потока
} ;
};
а потом создаем поток с функцией
thread_filter() передавая ей в качестве параметра указатель на класс A,
то же самое можно провернуть и со статической функцией класса, но итог один
имеем поток в классе