Delen via


Compilerwaarschuwing (niveau 1) C4342

gedragswijziging: 'functie' aangeroepen, maar er is een lidoperator aangeroepen in eerdere versies

Opmerkingen

In versies van Visual C++ vóór Visual Studio 2002 werd een lid aangeroepen, maar dit gedrag is gewijzigd en de compiler vindt nu de beste overeenkomst in naamruimtebereik.

Als er een lidoperator is gevonden, zou de compiler eerder geen operatoren voor naamruimtebereik overwegen. Als er een betere overeenkomst is voor het bereik van de naamruimte, roept de huidige compiler deze correct aan, terwijl eerdere compilers het niet zouden overwegen.

Deze waarschuwing moet worden uitgeschakeld nadat u de code hebt overgezet naar de huidige versie. De compiler kan valse positieven geven, deze waarschuwing genereren voor code waarbij er geen gedragswijziging is.

Deze waarschuwing is standaard uitgeschakeld. Zie Compilerwaarschuwingen die standaard zijn uitgeschakeld voor meer informatie.

Example

In het volgende voorbeeld wordt C4342 gegenereerd:

// C4342.cpp
// compile with: /EHsc /W1
#include <fstream>
#pragma warning(default: 4342)
using namespace std;
struct X : public ofstream {
   X();
};

X::X() {
   open( "ofs_bug_ev.txt." );
   if ( is_open() ) {
      *this << "Text" << "<-should be text" << endl;   // C4342
      *this << ' ' << "<-should be space symbol" << endl;   // C4342
   }
}

int main() {
   X b;
   b << "Text" << "<-should be text" << endl;
   b << ' ' << "<-should be space symbol" << endl;
}