Использование потоков в классах
class Unknow
{
private:
HANDLE Thr;
DWORD WINAPI UnThread(LPVOID lpVoid);
public:
Unknow();
~Unknow();
DWORD StartClass();
}
DWORD Unknow::StartClass()
{
Thr = CreateThread( NULL,
0,
(LPTHREAD_START_ROUTINE)UnThread,
NULL,
0,
NULL)
}
DWORD WINAPI Unknow::UnThread(LPVOID lpVoid)
{
ExitThread(0);
}
Я думаю смысл понятен (цель: создать поток, который будет иметь доступ к защищенным структурам класса).
Вот только он не понятен компилятору (Visual C++ v7). Подскажите, пожалуйста, как его сделать понятным компилятору.
При компиляции ошибка:
c:\Visual Studio Projects\Unknow.cpp(716): error C2440: 'type cast' : cannot convert from 'overloaded-function' to 'LPTHREAD_START_ROUTINE'
Ссылку на экземпляр можно передать в него в качестве lpVoid.
class Unknow
{
private:
DWORD priv;
HANDLE Thr;
static DWORD WINAPI UnThread(Unknow *lpVoid);
public:
Unknow();
~Unknow();
DWORD StartClass();
}
DWORD Unknow::StartClass()
{
Thr = CreateThread( NULL,
0,
(LPTHREAD_START_ROUTINE)UnThread,
this,
0,
NULL)
}
DWORD WINAPI Unknow::UnThread(Unknow *lpVoid)
{
lpVoid->priv = 0;
ExitThread(0);
}