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

StackOverflow https://stackoverflow.com/questions/1082552

سؤال

X__X.

أريد أن أفعل شيئا مثل هذا:

typedef long (* fp)(BaseWindow< fp > & wnd, HWND hwnd, long wparam, long lparam);

ولكن أحصل على خطأ في الترجمة:

خطأ C2065: 'FP': معرف غير محدد

هل من الممكن تنفيذ هذا بطريقة أو بأخرى؟

هل كانت مفيدة؟

المحلول

لا ليس كذلك، لأن نوع معلمة القالب سيتضمن نفسه. هذا من شأنه أن يحصل على العودية التي لا نهاية لها في النوع.

إذا بدلا من تخصص قالب الفئة، فإنك تقبل فئة أساسية منه، فهذا ممكن

struct TemplateBase {

};

typedef long (*fpType)(TemplateBase&, HWND, long, long);

template<fpType FP>
struct BaseWindow : TemplateBase {

};


long sampleFunc(TemplateBase &b, HWND hwnd, long wparam, long lparam) {
  ...
}

int main() {
    BaseWindow<sampleFunc> bw;
    sampleFunc(bw, ...);
}

ماذا تريد أن تفعل مع هذا؟

نصائح أخرى

من قسم الروابط ذات الصلة في هذه الصفحة بالوعة: كيف يمكنني Typedef مؤشر دالة يأخذ وظيفة من نوعها كوسيطة؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top