"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > طريقة للمرور الصحيح لمؤشرات وظيفة عضو C ++

طريقة للمرور الصحيح لمؤشرات وظيفة عضو C ++

نشر في 2025-05-03
تصفح:156

How to Pass C   Member Function Pointers Correctly?

كيفية تمرير مؤشرات وظيفة العضو في c مؤشر وظيفة مع توقيع معين. لتمرير وظيفة عضو ، تحتاج إلى توفير كل من مؤشر الكائن (هذا) ومؤشر وظيفة العضو. يمكن تحقيق ذلك عن طريق تعديل menubutton :: setbutton () على النحو التالي:

قالب void menubutton :: setbutton (int xpos ، int ypos ، lpcwstr normalfilepath ، LPCWSTSTR HoverfilePath ، LPCWSTRSTR PUSTEDFILEPATH ، عرض int ، ارتفاع int ، كائن *buttonobj ، void (كائن :: *buttonfunc) ())) { زر :: setbutton (xpos ، ypos ، normalfilepath ، hoverfilepath ، pressedfilepath ، العرض ، الارتفاع) ؛ this-> buttonObj = buttonObj ؛ هذا-> buttonfunc = buttonfunc ؛ }

الآن ، تأخذ وظيفة setButton () كلا مؤشر الكائن ومؤشر الوظيفة كمعلمات.

template 
void MenuButton::SetButton(int xPos, int yPos, LPCWSTR normalFilePath,
        LPCWSTR hoverFilePath, LPCWSTR pressedFilePath,
        int Width, int Height, object *ButtonObj, void (object::*ButtonFunc)())
{
  BUTTON::SetButton(xPos, yPos, normalFilePath, hoverFilePath, pressedFilePath, Width, Height);

  this->ButtonObj = ButtonObj;
  this->ButtonFunc = ButtonFunc;
}

يوفر هذا مؤشرات دالة الكائن والأعضاء اللازمة لوظيفة setButton () ، مما يسمح لها باستدعاء وظيفة العضو بشكل صحيح لاحقًا.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3