c++ - pthread function from a class -


मान लें कि मेरे पास एक वर्ग है जैसे

  class c {// ... शून्य * प्रिंट (शून्य *) {cout & lt; & lt; "नमस्ते"; }}  

और फिर मेरे पास एक सदिश है c

  vector & lt; c & gt; वर्गों; Pthread_t t1; classes.push_back (ग ()); classes.push_back (ग ());  

अब, मैं c.print () पर एक धागा बनाना चाहता हूं

और निम्नलिखित मुझे नीचे दी गई समस्या है: Ouput त्रुटि: 'शून्य * (tree_item ::

Em>) (शून्य ) 'शून्य' () (शून्य ) 'तर्क के लिए' 3 'से' int pthread_create (pthread_t *, const pthread_attr_t *, शून्य * () (शून्य ), शून्य *) '

आप' टी इसे जिस तरह से आपने लिखा है, ऐसा नहीं है क्योंकि सी ++ क्लास सदस्य फ़ंक्शंस में छुपा हुआ यह पैरामीटर पास किया गया है। pthread_create () को पता नहीं है कि का मान क्या है का उपयोग करें, इसलिए यदि आप उचित प्रकार के फ़ंक्शन पॉइंटर को विधि का कास्टिंग करके संकलक के चारों ओर ले जाने का प्रयास करते हैं, तो आपको एक सेगमेंटेशन गलती मिलेगी। क्लास को बूटस्ट्रैप करने के लिए आपको एक स्टैटिक क्लास मेथड (जिसमे कोई this पैरामीटर नहीं है) या सादे सामान्य फ़ंक्शन का उपयोग करना है:

  class C {public: void * नमस्ते (शून्य) {std :: cout & lt; & lt; "नमस्ते दुनिया!" & Lt; & lt; std :: endl; वापसी 0; } स्थिर शून्य * हैलो_हेल्पर (शून्य * संदर्भ) {रिटर्न ((सी *) संदर्भ) - & gt; हैलो (); }}; ... सी सी; Pthread_t t; Pthread_create (& amp; टी, नल, & amp; सी :: हैलो_हेल्पर, & amp; सी);  

Comments

Popular posts from this blog

java - org.apache.http.ProtocolException: Target host is not specified -

java - Gradle dependencies: compile project by relative path -

ruby on rails - Object doesn't support #inspect when used with .include -