में शून्य * (*) (शून्य *) को शून्य * (*) (शून्य *) में परिवर्तित नहीं कर सकता है, मैं कक्षा "कैमरा प्रबंधक" के साथ एक नया धागा बनाने की कोशिश कर रहा हूं लेकिन मेरे पास निम्न त्रुटि:pthread_create फ़ंक्शन
cannot convert '*void(CameraManager:: *)(void*) to void*(*)(void*) in pthread_create function
मैं 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();
}
मैं declar नहीं करना चाहते ई डेक्यू एक स्थैतिक फ़ंक्शन के रूप में लॉन्च किया गया है, मैंने डेक्यू लूप को निम्न तरीके से क्लास फ्रेंड फ़ंक्शन के रूप में घोषित करने की भी कोशिश की लेकिन उसके बाद कक्षा चर के 'हाई स्पीड कैमरे' और 'डेक्यूइंग' पर दायरा नहीं है और संकलक मुझे यह भी बताता है कि 'डेक्यू लूप' इस दायरे में घोषित नहीं
एक दोस्त समारोह मैंने किया 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();
}
}
जहां मैं गलत कर रहा हूँ?
आप इसे स्थिर सदस्य फ़ंक्शन क्यों नहीं बनाना चाहते हैं। आप हमेशा 'इस' को तर्क के रूप में पास कर सकते हैं ताकि आप अपने निजी सदस्य डेटा तक पहुंच प्राप्त कर सकें। – pstrjds