Название: Создание процесса(Нитки) в отдельном классе Отправлено: DEGroup от 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); } } что не так то? Как обойти ошибку? Название: Re: Создание процесса(Нитки) в отдельном классе Отправлено: volvo877 от 18 апреля 2012, 23:29:55 Функция потока не может быть членом класса, у нее есть строго определенная сигнатура (http://msdn.microsoft.com/en-us/library/windows/desktop/ms686736%28v=vs.85%29.aspx). Либо выноси ее за пределы класса, либо делай статической
Код static DWORD WINAPI ThreadFunction(LPVOID lpParam), неявный параметр this мешает компилятору. Название: Re: Создание процесса(Нитки) в отдельном классе Отправлено: DEGroup от 19 апреля 2012, 09:02:19 да разобрался, просто время познее было, заработался ;), вот голова и не варит, сам себя материл за тормознутость. Все равно спасибо!
|