Avviso del compilatore (livello 4) C4458
dichiarazione di 'identifier' nasconde il membro della classe
La dichiarazione di identificatore nell'ambito locale nasconde la dichiarazione dell'identificatore con nome identico nell'ambito della classe. Questo avviso consente di sapere che i riferimenti all'identificatore in questo ambito vengono risolti nella versione dichiarata in locale, non nella versione del membro della classe, che potrebbe essere o meno la finalità. Per risolvere questo problema, è consigliabile assegnare nomi di variabili locali che non sono in conflitto con i nomi dei membri della classe.
Esempio
L'esempio seguente genera l'errore C4458 perché il parametro x
e la variabile y
locale in member_fn
hanno gli stessi nomi dei membri dati nella classe . Per risolvere questo problema, usare nomi diversi per i parametri e le variabili locali.
// C4458_hide.cpp
// compile with: cl /W4 /c C4458_hide.cpp
struct S {
int x;
float y;
void member_fn(long x) { // C4458
double y; // C4458
y = x;
// To fix this issue, change the parameter name x
// and local name y to something that does not
// conflict with the data member names.
}
} s;