{ عام: void AddHandler (std :: function
لربط طريقة فئة محددة مع معالج الأحداث ، يتم استخدام std :: bind. std :: bind يحدد هذا المؤشر والوظيفة التي سيتم استدعاؤها عند تشغيل الحدث.
class EventHandler { public: void addHandler(std::functioncallback) { cout class myClass { عام: myClass () ؛ // ملاحظة: لم يعد مميزًا "ثابتًا" ، ويأخذ الوسيطة الفعلية فقط رد الفراغ (int x) ؛ خاص: int private_x ؛ } ؛ MyClass :: myclass () { باستخدام المساحة الأمراض المنقولة جنسياً: // لـ `_1` private_x = 5 ؛ Handler-> addHandler (std :: bind (& myclass :: callback ، this ، _1)) ؛ } void myclass :: callback (int x) { // لم يعد يحتاج إلى حجة صريحة "مثيل" ، // كما تم إعداد "هذا" بشكل صحيح cout وظائف ووظائف lambda الحرة { // ... } int main () { // ... Handler-> addHandler (freeStandingCallback) ؛ }
class MyClass { public: MyClass(); // Note: No longer marked `static`, and only takes the actual argument void Callback(int x); private: int private_x; }; MyClass::MyClass() { using namespace std::placeholders; // for `_1` private_x = 5; handler->addHandler(std::bind(&MyClass::Callback, this, _1)); } void MyClass::Callback(int x) { // No longer needs an explicit `instance` argument, // as `this` is set up properly cout
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3