Delen via


Compilerwaarschuwing (niveau 4) C4456

declaratie van 'identifier' verbergt een eerdere lokale declaratie

Opmerkingen

De declaratie van id in het lokale bereik verbergt de declaratie van de vorige lokale declaratie van dezelfde naam. Deze waarschuwing laat u weten dat verwijzingen naar identifier in het lokale bereik worden omgezet in de lokaal gedeclareerde versie, niet de vorige lokale versie, wat al dan niet uw bedoeling kan zijn. Om dit probleem op te lossen, raden we u aan lokale variabelen namen te geven die niet conflicteren met andere lokale namen.

Example

In het volgende voorbeeld wordt C4456 gegenereerd omdat de lusbesturingsvariabele int x en de lokale variabele double xmember_fn dezelfde namen hebben. Gebruik verschillende namen voor de lokale variabelen om dit probleem op te lossen.

// C4456_hide.cpp
// compile with: cl /W4 /c C4456_hide.cpp

struct S {
    void member_fn(unsigned u) {
        double x = 0;
        for (int x = 0; x < 10; ++x) {  // C4456
            u += x; // uses local int x
        }
        x += u; // uses local double x
    }
} s;