2016-09-14 21 views
6

मैं अपने कोड में std :: धागा उपयोग करने के साथ एक समस्या है :: थ्रेड इंस्टेंस, थ्रेडफंक() कक्षा का निजी सदस्य फ़ंक्शन है जो शून्य लौटाता है;पासिंग वर्ग के सदस्य समारोह एसटीडी :: धागा

मुझे लगता है कि मैं समझता हूं कि सदस्य कार्य को std :: थ्रेड पर भेजने के 2 तरीके हैं, यदि फ़ंक्शन स्थिर है तो मैं t_thread = std :: thread (threadfunc) का उपयोग करूंगा; लेकिन मैं नहीं चाहता कि थ्रेडफनक स्थिर हो, और ऐसा करने से मुझे त्रुटि मिलती है।

मुझे लगता है कि मैं एक समारोह बनाने के द्वारा समस्या का समाधान:

std::thread ThreadReturner() 
{ 
    return std::thread([=] { ThreadFunc(); }); 
} 
... 
t_thread = ThreadReturner(); 

इस तरह से मैं त्रुटियों नहीं मिलता है, लेकिन मुझे समझ नहीं आता क्यों पहले एक काम नहीं करता।

किसी भी मदद की सराहना की जाती है।

मेरा प्रश्न डुप्लिकेट जैसा दिखता है, लेकिन दूसरे प्रश्न के उत्तर में केवल 1 अंतर है, std :: धागा कक्षा घोषणा या कार्यान्वयन के बाहर उपयोग किया गया था, यह मुख्य() में था, जिस मामले में दायरे को निर्दिष्ट किया गया था मुझे समझ में, लेकिन जब कक्षा के अंदर std :: धागा कहा जाता था। यही एकमात्र अंतर है जिसे मैंने देखा और मैंने यह धागा क्यों बनाया, संभावित डुप्लिकेट के बारे में खेद है।

उत्तर

5

आप गुंजाइश

&Timer::ThreadFunc 
+0

धन्यवाद निर्दिष्ट करना चाहिए! यह काम करता है। – Dragon

संबंधित मुद्दे