في عالم الرؤوس المتعددة ، من الشائع مواجهة الحاجة إلى استدعاء وظائف الأعضاء في فئة ما في تنفيذ مؤشر الترابط. ومع ذلك ، يمكن أن تمثل هذه المهمة تحديات بسبب المعلمة المخفية "هذا" في وظائف عضو الفئة C. void *print (void *) {cout
الآن ، دعنا ننشئ متجهًا من مثيلات C:
class C { void *print(void *) { coutلإنشاء مؤشر ترابط ينفذ c.print () ، قد تكتب بشكل مباشر:
vectorclasses; pthread_t t1; classes.push_back(C()); classes.push_back(C()); تنشأ المشكلة لأن pthread_create () تتوقع مؤشر دالة لنوع معين ، في حين أن c [0]. Pointer
pthread_create(&t1, NULL, &c[0].print, NULL);طريقة فئة ثابتة
cannot convert ‘void* (tree_item::*)(void*)’ to ‘void* (*)(void*)’الفئة C { عام: باطل ثابت *مرحبا (void *) {std :: cout
بعد ذلك ، يمكنك إنشاء مؤشر ترابط باستخدام طريقة الفئة الثابتة:
يمكن بعد ذلك استخدام مؤشر الوظيفة هذا لإنشاء مؤشر ترابط.
C C ؛ pthread_create (& t ، null ، & c :: hello_helper ، & c) ؛
حيث يتم تعريف hello_helper على النحو التالي: }
class C { public: static void *hello(void *) { std::cout
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3