Problème de pointeur avec surcharge en C ++?
-
22-07-2019 - |
Question
Les pointeurs présentent des problèmes particuliers pour la résolution des surcharges.
Dites par exemple,
void f(int* x) { ... }
void f(char* x) { ...}
int main()
{
f(0);
}
Quel est le problème avec l'appel de f (0)? Comment puis-je résoudre l'appel de fonction pour f (0)?
La solution
f ((int *) 0)
ou f ((char *) 0)
Mais si vous vous trouvez en train de faire cela, je jetterais un autre coup d'oeil à votre conception.
Autres conseils
Diffusez-le ou ne l'utilisez pas du tout:
f((int*)0);
Ce qui ne va pas avec l'appel de f (0), c'est que la résolution est ambiguë. Vos deux fonctions surchargées prennent un pointeur qui, dans ce cas, ne peut être résolu que par cast.
f((int*)0)
En fonction de ce que vous essayez de faire ici, d'autres options ne sont pas ambiguës.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow