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.

È stato utile?

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
scroll top