Re: Функция член класса, функция потока?
От: feshman  
Дата: 26.01.03 10:36
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Есть много книг где описываются 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,
то же самое можно провернуть и со статической функцией класса, но итог один
имеем поток в классе
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.