Я пытался использовать набор функций фильтра для запуска соответствующей подпрограммы, основанной на строковом вводе. Я пытался создать функции сопоставления для общих случаев с использованием шаблонов, но при попытке сохранить указатель на специализированную функцию (в структуре, в реальном приложении) я получаю ошибку "тип не равен типу"
Дистиллированный пример из консольного приложения 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
(также имеется ошибка в основном возвращаемом значении, но это меня здесь не касается.)
Тот же пример удастся заменить, если const char *
заменить на int.