Frage

Ich habe versucht, eine Reihe von Filterfunktionen verwenden Sie die entsprechende Routine ausgeführt werden, basierend auf einem String-Eingang. Ich habe versucht, Matcher Funktionen für allgemeine Fälle zum Erstellen von Vorlagen verwenden, aber ich erhalte eine „Typen nicht gleich geben“ Fehler, wenn ich versuche, einen Zeiger auf die spezielle Funktion zu speichern (in einer Struktur, in der realen Anwendung)

Destilliertes Beispiel aus einem Visual C ++ 8 'Konsolenanwendung'

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

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


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

Dies schlägt mit dem Fehler

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

(Es hat auch einen Fehler auf dem Haupt-Rückgabewert, aber das macht mich hier nicht beschäftigen.)

Das gleiche Beispiel succedes wenn const char * mit int ersetzt wird.

War es hilfreich?

Lösung

Strings als Template-Wert Parameter, die von der ISO-Norm verboten sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top