(?) Класс + Многопоточность
Добавлено: 14 фев 2005, 11:22
Привет всем.
У меня проблема, о ней ниже.
Цель:
Необходимо создать класс, который при своей инициализации (с помощью
коструктора) создавал бы поток, который в свою очередь мог бы иметь доступ к
члена класса, в котором он создан.
Код(упрощенный) такой:
class Ms
{
public:
Ms();
HANDLE heExit;
unsigned int WINAPI Rt(PVOID pvParam);
private:
HANDLE htRt;
};
Ms::Ms()
{
unsigned threadID;
heExit = CreateEvent(NULL, TRUE, FALSE, NULL);
htRt = (HANDLE)_beginthreadex( NULL, 0, &Rt, NULL, 0, &threadID ); // (?)
}
Проблема:
Компилятор ругается error C2276: '&' : illegal operation on bound member
function expression.
но если поставить в определении класса вместо unsigned int WINAPI Rt(PVOID
pvParam); поставить static unsigned int WINAPI Rt(PVOID pvParam); то
_beginthreadex спокойно это переваривает. Но мне не нужна статическая
функция - она не может получить доступ к нестатическим членам класса.
Спасибо.
У меня проблема, о ней ниже.
Цель:
Необходимо создать класс, который при своей инициализации (с помощью
коструктора) создавал бы поток, который в свою очередь мог бы иметь доступ к
члена класса, в котором он создан.
Код(упрощенный) такой:
class Ms
{
public:
Ms();
HANDLE heExit;
unsigned int WINAPI Rt(PVOID pvParam);
private:
HANDLE htRt;
};
Ms::Ms()
{
unsigned threadID;
heExit = CreateEvent(NULL, TRUE, FALSE, NULL);
htRt = (HANDLE)_beginthreadex( NULL, 0, &Rt, NULL, 0, &threadID ); // (?)
}
Проблема:
Компилятор ругается error C2276: '&' : illegal operation on bound member
function expression.
но если поставить в определении класса вместо unsigned int WINAPI Rt(PVOID
pvParam); поставить static unsigned int WINAPI Rt(PVOID pvParam); то
_beginthreadex спокойно это переваривает. Но мне не нужна статическая
функция - она не может получить доступ к нестатическим членам класса.
Спасибо.