Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Использование потоков в классах

13K
09 октября 2006 года
AlexU
6 / / 16.12.2005
Имеется
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'
3
09 октября 2006 года
Green
4.8K / / 20.01.2000
Метод UnThread должен быть статическим.
Ссылку на экземпляр можно передать в него в качестве lpVoid.
13K
09 октября 2006 года
AlexU
6 / / 16.12.2005
Большое спасибо, все ролучилось после исправления:

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);
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог