في لغة C، كيف يمكن استخدام وظيفة القالب كوسيطة قالب لتحقيق إعادة استخدام التعليمات البرمجية أثناء الحفاظ على الوظائف العامة، لا سيما عندما تكون الوظائف المعنية نفسها عبارة عن قوالب أيضًا؟
لمعالجة هذه المشكلة، استخدم معلمة قالب القالب. المفهوم الأساسي هو أن معلمات القالب لا يمكن أن تتضمن وظائف قالب القالب مباشرة بسبب الحاجة إلى إنشاء مثيل مسبق. يتضمن الحل البديل استخدام بنيات وهمية لتغليف وظيفة القالب:
template
struct a {
static void foo(T = T()) {}
};
template
struct b {
static void foo(T = T()) {}
};
struct SomeObj {};
struct SomeOtherObj {};
template class T>
void function() {
T::foo();
T::foo();
}
int main() {
function();
function();
}
في هذا المثال، تقوم البنيتان a وb بتنفيذ وظائف القالب للطريقة foo. يأخذ قالب الدالة معلمة قالب القالب، مما يسمح لنا بتمرير القالبين a وb كوسائط. داخل الوظيفة، يتم إنشاء مثيلات محددة للهياكل الوهمية، مما يتيح استدعاء foo مع أنواع مختلفة من المعلمات.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3