¿Problemas de puntero con sobrecarga en C ++?
-
22-07-2019 - |
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)?
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