Pergunta

Eu estava tentando usar um conjunto de funções de filtro para executar a rotina apropriada, com base em uma entrada de string. Tentei criar funções matcher para casos comuns usando modelos, mas eu recebo um "tipo não igualar a digitar" erro ao tentar armazenar um ponteiro para a função especializada (em uma estrutura, na aplicação real)

destilada exemplo de um Visual C ++ 8 'aplicação de consola'

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

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


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

Esta falha com o erro

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

(Ele também tem um erro no valor de retorno principal, mas isso não me diz respeito aqui.)

O mesmo exemplo succedes se const char * é substituído por int.

Foi útil?

Solução

Strings como parâmetros do modelo de valor são proibidos pela norma ISO.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top