Share via


Upozornění kompilátoru (úroveň 1) C4342

změna chování: "funkce" volala, ale operátor člena byl volána v předchozích verzích.

Ve verzích Visual C++ před sadou Visual Studio 2002 byl volán člen, ale toto chování bylo změněno a kompilátor nyní najde nejlepší shodu v oboru názvů.

Pokud byl nalezen operátor člena, kompilátor by dříve nebral v úvahu žádné operátory oboru názvů. Pokud je v oboru názvů lepší shoda, aktuální kompilátor ho správně volá, zatímco předchozí kompilátor by ho nemyslel.

Toto upozornění by mělo být po úspěšném přenosu kódu do aktuální verze zakázané. Kompilátor může dát falešně pozitivní výsledky, což vygeneruje toto upozornění pro kód, kde nedošlo ke změně chování.

Toto upozornění je ve výchozím nastavení vypnuté. Další informace najdete v tématu Upozornění kompilátoru, která jsou ve výchozím nastavení vypnutá.

Následující ukázka vygeneruje C4342:

// 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;
}