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

È stato utile?

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