Problemi di puntatore con sovraccarico in C ++?
-
22-07-2019 - |
Domanda
I puntatori presentano alcuni problemi speciali per la risoluzione del sovraccarico.
Di 'ad esempio,
void f(int* x) { ... }
void f(char* x) { ...}
int main()
{
f(0);
}
Cosa c'è di sbagliato nel chiamare f (0)? Come posso risolvere la chiamata di funzione per f (0)?
Soluzione
f ((int *) 0)
o f ((char *) 0)
Ma se ti ritrovi a fare questo, darei un altro sguardo al tuo design.
Altri suggerimenti
Lancialo o non usarlo affatto:
f((int*)0);
Ciò che è sbagliato nel chiamare f (0) è che la risoluzione è ambigua. Entrambe le funzioni sovraccaricate prendono un puntatore che in questo caso può essere risolto solo tramite cast.
f((int*)0)
A seconda di cosa stai cercando di fare qui ci sono altre opzioni che non sono ambigue.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow