توفر مؤشرات الوظائف طريقة للإشارة إلى محددات محددة وظائف المشغل. ومع ذلك، بالنسبة للمشغلين القياسيين المدمجين، قد لا يكون هذا النهج واضحًا. تتعمق هذه المقالة في الأسباب الكامنة وراء هذا القيد وتستكشف حلولًا بديلة لتحقيق وظائف مماثلة.
وفقًا لمعيار C (13.6 / 1)، عوامل التشغيل المضمنة ليست وظائف مشغل عادية، وبالتالي لا يمكن أن يكون لها مؤشرات وظيفية تشير إليها. إنهم يشاركون فقط في حل التحميل الزائد دون خدمة أي غرض آخر.
للتغلب على هذا القيد، يقدم معيار C كائنات وظيفية، والتي توفر وظيفة مماثلة للكائنات المضمنة. المشغلين من خلال الكائنات القالبة. على سبيل المثال، بالنسبة للمقارنات، يتم تعريف كائنات دالة مثلequal_to، وgreater، وless_equal. يمكن استخدام هذه الكائنات كوسائط مؤشر دالة.
في مقتطف التعليمات البرمجية المقدم، الهدف هو مقارنة عددين صحيحين داخل فئة القالب. باستخدام تقنية الكائنات الوظيفية، يمكن تحقيق ذلك على النحو التالي:
class MyAction {
bool operator()() {
if (fnCompare_(arg0_, arg1_)) {
// do this
} else {
// do s.th. else
}
}
};
هنا، fnCompare_ يمكن أن يكون كائن دالة مثل std::equal_to
بالإضافة إلى الكائنات الوظيفية ، يمكن أيضًا استخدام عوامل تشغيل المكتبة القياسية كمؤشرات وظيفية. ومع ذلك، يجب الإشارة إلى المثيل الخاص بالقالب. على سبيل المثال:
std::basic_string a("test"), b("test2");
std::cout >(a, b, &std::operator );
بينما لا تكون مؤشرات الوظائف متاحة مباشرة للبني- في العوامل القياسية، تسمح الحلول البديلة التي توفرها الكائنات الوظيفية وعوامل التشغيل من النوع القياسي بوظائف مكافئة. تتيح هذه البدائل استخدام عوامل تشغيل قياسية محددة كمؤشرات وظيفية، ومعالجة القيود التي تقدمها عوامل التشغيل المضمنة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3