Come portare un puntatore a una funzione modello specializzata in una stringa?
-
20-08-2019 - |
Domanda
Stavo provando a utilizzare una serie di funzioni di filtro per eseguire la routine appropriata, basata su un input di stringa. Ho provato a creare funzioni matcher per i casi più comuni usando i template, ma ottengo un & Quot; type non uguale al tipo & Quot; errore quando provo a memorizzare un puntatore alla funzione specializzata (in una struttura, nella vera applicazione)
Esempio distillato da 'console application' di 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();
}
Questo non riesce con l'errore
Error 1 error C2440: 'initializing' : cannot convert from 'const char *(__cdecl *)(void)' to 'const char *(__cdecl *)(void)' c:\files\pointer.cpp 7
(ha anche un errore sul valore di ritorno principale, ma questo non mi riguarda qui.)
Lo stesso esempio succede se const char *
viene sostituito con int.
Soluzione
Le stringhe come parametri del valore del modello sono proibite dallo standard ISO.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow