重複の可能性:
クラスからの pthread 関数
私はc ++を初めて使用し、TCPに関するプロジェクトを行っています。
スレッドを作成する必要があるので、ググってこれを見つけました。 http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html
その構文に従いますが、エラーが発生します: タイプ 'void* (ns3::TcpSocketBase::)()' の引数が 'void* ( )(void )' と一致しません</p>
コード:
tcp-socket-base.h:
class TcpSocketBase : public TcpSocket
{
public:
...
void *threadfunction();
....
}
tcp-socket-base.cc:
void
*TcpSocketBase::threadfunction()
{
//do something
}
..//the thread was create and the function is called here
pthread_t t1;
int temp = pthread_create(&t1, NULL, ReceivedSpecialAck, NULL); //The error happens here
return;
...
どんな助けでも大歓迎です。ありがとう!
編集:
私はアドバイスを受けて、スレッド関数を非メンバー関数にしました。
namespaceXXX{
void *threadfunction()
int result = pthread_create(&t1, NULL, threadfunction, NULL);
NS_LOG_LOGIC ("TcpSocketBase " << this << " Create Thread returned result: " << result );
void *threadfunction()
{
.....
}
}
しかし、代わりにこのエラーが発生しました:
'int pthread_create(pthread_t*, const pthread_attr_t*, void* ( )(void ), void*)' の引数 3 を初期化します [-fpermissive]