У меня есть класс, который содержит функцию, которая вызывает создание потока, и должен передать себя (это) в качестве параметра:
DWORD threadId;
HANDLE h = CreateThread( NULL, 0, runThread, this, 0, &threadId);
Мое определение runThread выглядит следующим образом:
DWORD WINAPI runThread(LPVOID args)
{
Obj *t = (Obj*)args;
t->funct();
return 0;
}
К сожалению, объект t, который я получаю в runThread (), получает мусор. Мой класс Obj имеет атрибут указателя на функцию. Может ли это быть проблемой?
class Obj{
void(*funct)();
и в конструкторе:
Obj(void(*f)())
{
funct = f;
}
где моя ошибка? Указатель на функцию, сам createThread или приведение типов? Я попробовал все, что мог придумать.