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)?

Foi útil?

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