Скачал библиотеку с классом для работы с ком портом ( http://xor-011.narod.ru/programming/comport.rar 4 KB:) Она не компилируется (Asp 10, KDevelop).
В библиотеке описан такой класс ComPort:
class ComPort : public QObject
{
.....................
bool Open(int lNumPort,int lSpeed, int lSize, eParity lParity, bool lStopBit, eProtocol lProtocol);
...........................................
void* slotReadThreadNON(void*);
void* slotReadThreadQPD(void*);
void* slotReadThreadQSU(void*);
.......................................
В методе open должен запускаться либо slotReadThreadNON, либо slotReadThreadQPD,
либо slotReadThreadQSU как thread с помощью pthread_create из <pthread.h> :
bool ComPort::Open(int lNumPort, int lSpeed, int lSize, eParity lParity, bool lStopBit, eProtocol lProtocol)
{
..............................................
switch (lProtocol)
{
case qpd:
if (pthread_create(&read_thread,NULL,ComPort::slotReadThreadQPD,this)!=0)
// {cerr <<"\nError - on create thread\n";};
return true;
break;
case qsu:
if (pthread_create(&read_thread,NULL,ComPort::slotReadThreadQSU,this)!=0)
// {cerr <<"\nError - on create thread\n";};
return true;
............................................................................
но компилятор ругается :
comport.cpp: In member function `bool ComPort::Open(int, int, int, eParity,
bool, eProtocol)':
comport.cpp:62: error: no matches converting function `slotReadThreadQPD' to
type `void*(*)(void*)'
comport.h:68: error: candidates are: void* ComPort::slotReadThreadQPD(void*)
comport.cpp:67: error: no matches converting function `slotReadThreadQSU' to
type `void*(*)(void*)'
comport.h:70: error: candidates are: void* ComPort::slotReadThreadQSU(void*)
comport.cpp:72: error: no matches converting function `slotReadThreadNON' to
type `void*(*)(void*)'
comport.h:66: error: candidates are: void* ComPort::slotReadThreadNON(void*)
Глобальные функции запускаются нормально. Если описАть slotReadThreadNON, slotReadThreadQPD, slotReadThreadQSU , как static или friend , то эти ошибки пропадают, но, естественно, появляется куча других, связанных с вызовом методов ComPort из slotReadThreadNON, slotReadThreadQPD, slotReadThreadQSU.
Возможно ли вообще запускать метод объекта нитью ? А метод класса?
Заранее спасибо!