Pregunta

Los punteros presentan algunos problemas especiales para la resolución de sobrecarga.

Digamos, por ejemplo,

void f(int* x) { ... }
void f(char* x) { ...}
int main()
{
    f(0);
}

¿Qué tiene de malo llamar a f (0)? ¿Cómo puedo solucionar la llamada a la función para f (0)?

¿Fue útil?

Solución

f ((int *) 0) o f ((char *) 0)

Pero si te encuentras haciendo esto, volvería a analizar tu diseño.

Otros consejos

Transmítelo o no lo uses en absoluto:

f((int*)0);

Lo que está mal al llamar a f (0) es que la resolución es ambigua. Ambas funciones sobrecargadas toman un puntero que, en este caso, solo se puede resolver a través de la transmisión.

f((int*)0)

Dependiendo de lo que intente hacer aquí, hay otras opciones que no son ambiguas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top