Sdílet prostřednictvím


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

Změna chování: "pracovat" jen, ale v předchozích verzích byla volána operátor členské

V předchozích verzích aplikace Visual C++ člen byla volána, ale toto chování bylo změněno a kompilátor vyhledá nejvhodnější v oboru názvů.

Pokud operátor člen nebyl nalezen, kompilátor by dříve zvážit libovolný obor názvů obor operátory.Je lepší shoda v oboru názvů, aktuální kompilátor správně zavolá, že by považuje předchozí kompilátory.

Toto varování by mělo být zakázáno po úspěšném přenesení kódu do aktuální verze. Kompilátor může dát falešně pozitivních výsledků, generování kódu upozornění v případě, že nedojde ke změně chování.

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

Následující ukázka generuje upozornění 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;
}