Udostępnij za pośrednictwem


Ostrzeżenie kompilatora (poziom 1) C4342

Zmiana zachowania: "function" o nazwie, ale operator Członkowskie została wywołana w poprzednich wersjach

W poprzednich wersjach programu Visual C++ członek została wywołana, ale to zachowanie został zmieniony i kompilator będzie znaleźć najlepsze dopasowanie w zakresie obszaru nazw.

Jeśli operator członek został znaleziony, kompilator wcześniej nie będzie za każdy obszar nazw operatory zakresu.Jeśli istnieje lepsze dopasowanie w zakresie nazw, kompilator bieżącego poprawnie wywołać ją, dlatego kompilatory poprzedniego nie uważają, że.

Ostrzeżenie to należy wyłączyć po pomyślnie portu kodu do bieżącej wersji. Kompilator może dać fałszywie generowania to ostrzeżenie dla kodu w przypadku, gdy nie ma żadnej zmiany zachowania.

To ostrzeżenie jest domyślnie wyłączona.Aby uzyskać dodatkowe informacje, zobacz Domyślnie wyłączone ostrzeżenia kompilatora.

Poniższy przykład spowoduje wygenerowanie błędu 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;
}