クラス「CameraManager」で新しいスレッドを作成しようとしていますが、次のエラーが発生します。
pthread_create関数で'*void(CameraManager :: *)(void *)をvoid *(*)(void *)に変換できません
私はcameramanager.hファイルで定義しました:
public:
void *dequeueLoop(void *ptr);
とcameramanager.cppで
void CameraManager::startDequeuing(){
dequeuing = true;
dequeueThreadId = pthread_create(&dequeueThread, NULL, &CameraManager::dequeueLoop, NULL);
}
void *CameraManager::dequeueLoop(void *ptr){
while(dequeuing){
highSpeedCamera->dequeue();
highSpeedCamera->enqueue();
}
dequeueLoopを静的関数として宣言したくない私も次の方法でdequeueLoopをクラスフレンド関数として宣言しようとしましたが、クラス変数「highSpeedCamera」と「dequeuing」のスコープがなく、コンパイラも通知します'dequeueLoop'がこのスコープで宣言されていないことを私に
dequeueLoopをフレンド関数にするために:
cameramanager.h
public:
friend void *dequeueLoop(void *ptr);
cameramanager.cpp
void CameraManager::startDequeuing(){
dequeuing = true;
dequeueThreadId = pthread_create(&dequeueThread, NULL, &CameraManager::dequeueLoop, NULL);
}
void *dequeueLoop(void *ptr){
while(dequeuing){
highSpeedCamera->dequeue();
highSpeedCamera->enqueue();
}
}
私はどこで間違っているのですか?