Avviso del compilatore (livello 4) C4457
dichiarazione di 'identifier' nasconde il parametro della funzione
La dichiarazione di identificatore nell'ambito locale nasconde la dichiarazione del parametro della funzione con nome identico. Questo avviso consente di sapere che i riferimenti all'identificatore nell'ambito locale vengono risolti nella versione dichiarata in locale, non nel parametro , che può essere o meno la finalità. Per risolvere questo problema, è consigliabile assegnare nomi di variabili locali che non sono in conflitto con i nomi dei parametri.
Esempio
L'esempio seguente genera l'errore C4457 perché il parametro x
e la variabile x
locale in member_fn
hanno gli stessi nomi. Per risolvere questo problema, usare nomi diversi per i parametri e le variabili locali.
// C4457_hide.cpp
// compile with: cl /W4 /c C4457_hide.cpp
struct S {
void member_fn(unsigned x) {
double a = 0;
for (int x = 0; x < 10; ++x) { // C4457
a += x; // uses local x
}
a += x; // uses parameter x
}
} s;