Ich versuche, einen Thread in Hauptfunktion zu erstellen und eine Funktion einer anderen Klasse über meine aufrufen Faden.kann nicht konvertieren vom Typ void * (Klassenname) (void *) in void * (*) (void *) in einem Pthread
In main.cpp:
SocketHandler *callserver;
pthread_t thread1;
pthread_create(&thread1,0, callserver->createSocket,NULL);
und in SocketHandler.h:
void* createSocket();
und in SocketHandler.cpp:
void * SocketHandler::createSocket()
{
//....
}
Als ich Haupt zu kompilieren versuchen. cpp Ich erhalte einen Fehler
cannot convert SocketHandler::createSocket from type void* (SocketHandler::)() to type void* (*)(void*)
Eine nicht statische Elementfunktion kann nicht als einfache Threadfunktion verwendet werden. Sie benötigen eine statische Elementfunktion oder eine Nichtmitgliedsfunktion. Oh, und natürlich welche Funktion Sie auch verwenden, es muss tatsächlich ein 'void *' Argument nehmen. Oder du könntest natürlich mit der Zeit gehen und anfangen, ['std :: thread'] zu benutzen (http://en.cppreference.com/w/cpp/thread/thread). –
Wenn Sie C++ 11 oder höher haben, würde ich vorschlagen, dass Sie den von der Bibliothek bereitgestellten 'std :: thread 'verwenden, damit Sie nicht mit' void * 's herumfummeln müssen. – NathanOliver
@NathanOliver oder verwenden Sie 'boost :: thread' für pre C++ 11 – Slava