سؤال

وكنت أحاول استخدام مجموعة من الوظائف مرشح لتشغيل الروتين المناسب، بناء على سلسلة الإدخال. حاولت خلق وظائف المنظر الحالات الشائعة باستخدام القوالب، ولكن يمكنني الحصول على "اكتب لا يساوي اكتب" خطأ عند محاولة تخزين مؤشر إلى وظيفة متخصصة (في هيكل، في تطبيق حقيقي)

والمقطر سبيل المثال من تطبيق Visual C ++ 8 "تطبيق وحدة '

template <const char *C>
const char*
f(void) {
  return C;
}

const char* (*g)(void) = f<"hi">;


int _tmain(int argc, _TCHAR* argv[])
{
  return g();
}

وهذا فشل مع الخطأ

Error   1   error C2440: 'initializing' : cannot convert from 'const char *(__cdecl *)(void)' to 'const char *(__cdecl *)(void)'    c:\files\pointer.cpp    7   

و(كما أن لديها خطأ على قيمة الإرجاع الرئيسية، ولكن هذا لا يهمني هنا.)

والمثال نفسه succedes إذا تم استبدال const char * مع كثافة العمليات.

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

المحلول

يحظر

وسلاسل كمعلمات قالب القيمة وفق المعايير ISO.

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