problemas ponteiro com sobrecarga em C ++?
-
22-07-2019 - |
Pergunta
Ponteiros apresentar alguns problemas especiais para a resolução de sobrecarga.
Digamos, por exemplo,
void f(int* x) { ... }
void f(char* x) { ...}
int main()
{
f(0);
}
O que está errado com a chamada f (0)? Como posso corrigir a chamada de função para f (0)?
Solução
f((int*) 0)
ou f((char *) 0)
Mas se você se encontra fazendo isso eu tomaria um outro olhar para o seu design.
Outras dicas
Arroja isso, ou não usá-lo em tudo:
f((int*)0);
O que está errado com a chamada f (0) é a resolução é ambíguo. Ambas as funções sobrecarregadas pegam um ponteiro que neste caso só pode ser resolvido através de elenco.
f((int*)0)
Dependendo do que você está tentando fazer aqui, existem outras opções que não são ambíguos.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow