main関数でスレッドを作成し、別のクラスの関数をmy糸。 main.cppにはpthread内でvoid *(クラス名)(void *)からvoid *(*)(void *)に変換できません
:
SocketHandler *callserver;
pthread_t thread1;
pthread_create(&thread1,0, callserver->createSocket,NULL);
とSocketHandler.hで:
void* createSocket();
とSocketHandler.cppで:
void * SocketHandler::createSocket()
{
//....
}
私はメインコンパイルしようとしています。 cppエラーが発生する
cannot convert SocketHandler::createSocket from type void* (SocketHandler::)() to type void* (*)(void*)
非スタティックメンバ関数を単純なスレッド関数として使用することはできません。静的メンバー関数または非メンバー関数が必要です。もちろん、どんな関数を使うにしても、実際には 'void *'引数を取る必要があります。もちろん、時代とともに「[std :: thread'](http://en.cppreference.com/w/cpp/thread/thread)を使い始めることもできます。 –
C++ 11以上をお持ちの場合は、ライブラリによって提供される 'std :: thread'を使用することをお勧めします。そうすれば、' void * 'で悩む必要はありません。 – NathanOliver
@ NathanOliverまたはpre C++ 11のために 'boost :: thread'を使用してください – Slava