我正在尝试使用“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 成为我所做的朋友功能:
相机管理器.h
public:
friend void *dequeueLoop(void *ptr);
相机管理器.cpp
void CameraManager::startDequeuing(){
dequeuing = true;
dequeueThreadId = pthread_create(&dequeueThread, NULL, &CameraManager::dequeueLoop, NULL);
}
void *dequeueLoop(void *ptr){
while(dequeuing){
highSpeedCamera->dequeue();
highSpeedCamera->enqueue();
}
}
我在哪里做错了?