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

كيف يمكنني الوصول إلى أنواع الوسائط الخاصة بمؤشر الوظيفة ضمن فئة قالب متغير؟

تم النشر بتاريخ 2024-11-21
تصفح:387

How can I access the argument types of a function pointer within a variadic template class?

الوصول إلى أنواع وسيطات مؤشر الدالة في فئة القالب المتغير

تنشأ هذه المشكلة من استعلام سابق يتعلق بإنشاء عامل عام للوظائف ذات الوسيطة العشوائية القوائم. تسمح فئة المعامل المعطاة، Foo، باستدعاء مؤشر دالة بأي عدد من الوسائط. ومع ذلك، المهمة الآن هي استخراج أنواع الوسيطات من مؤشر الدالة داخل مُنشئ Foo.

عند تعريف فئة Foo، يتم تغليف أنواع الوسيطات كـ ARGS... في تعريف مؤشر دالة المُنشئ. على الرغم من أن قيم الوسائط غير متوفرة في وقت الإنشاء، إلا أنه يمكن الوصول إلى أنواعها من خلال مؤشر الوظيفة نفسه.

للكشف عن أنواع الوسائط هذه، يمكن للمرء الاستفادة من فئة function_traits:

template 
struct function_traits;  

template>
{
    // Number of arguments
    static const size_t nargs = sizeof...(Args);

    // Return type
    typedef R result_type;

    // Argument types at specified index
    template <size_t i>
    struct arg
    {
        typedef typename std::tuple_element<i, std::tuple<Args...>>::type type;
    };
};

ضمن مُنشئ Foo، يمكن للمرء الوصول إلى أنواع الوسائط هذه باستخدام function_traits كما يلي:

template

من خلال استخدام function_traits، يمكن استخراج أنواع الوسائط والاستفادة منها داخل فئة Foo، مما يتيح عمليات معقدة تعتمد على توقيع الوظيفة.

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

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

Copyright© 2022 湘ICP备2022001581号-3