C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Создание процесса(Нитки) в отдельном классе  (Прочитано 6753 раз)
DEGroup
Участник
**

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 4


« : 18 апреля 2012, 22:26:14 »

Ситуация такая:
Есть обычная WIN программка
в Form1 имеем код

Код C++
 
#include <vcl.h>
...
 
HANDLE hMainNetThread = NULL;
DWORD dwNetThreadId;
DWORD WINAPI MainNetThread(LPVOID lpParam);
...
 
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow(TObject *Sender)
{
....
  hMainNetThread = CreateThread(NULL,0,MainNetThread,0,0,&dwNetThreadId);
....
}
....
DWORD WINAPI MainNetThread(LPVOID lpParam)
{
   while(1)
    {
     ...
    }
}
}
 
Все пашет.
Теперь другая программка (с использованием своего класса)
Код C++
#include <vcl.h>
...
 
class MyClass
{
   HANDLE hMainNetThread = NULL; 
   DWORD dwNetThreadId;
 
    __fastcall MyClass(int Number)
    {
     .....
        hMainNetThread = CreateThread(NULL,0,MainNetThread,0,0,&dwNetThreadId);
Вот тут ошибка компилятора 
(E2034 Cannot convert 'unsigned long (__stdcall * (_closure )(void *))(void *)' to 'void *')
 
    }
....
    DWORD WINAPI ThreadFunction(LPVOID lpParam)
    {
    return 0;
    }
 
}
MyClass *ClassMy[MaxChannelCount];
....
void __fastcall TForm1::FormShow(TObject *Sender)
{
  for(int i= 0; i<MaxChannelCount; i++)
   {
     ClassMy = new MyClass(i);
   }
}
 
что не так то? Как обойти ошибку?
Записан
volvo877
Глобальный модератор
***

Сказали спасибо: +736/-1
Offline Offline

Сообщений: 891


« Ответ #1 : 18 апреля 2012, 23:29:55 »

Функция потока не может быть членом класса, у нее есть строго определенная сигнатура. Либо выноси ее за пределы класса, либо делай статической
Код
static DWORD WINAPI ThreadFunction(LPVOID lpParam)
{
  // ...
}
, неявный параметр this мешает компилятору.
Записан
DEGroup
Участник
**

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 4


« Ответ #2 : 19 апреля 2012, 09:02:19 »

да разобрался, просто время познее было, заработался  Подмигивающий, вот голова и не варит, сам себя материл за тормознутость. Все равно спасибо!
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в: