Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Mudança de comportamento: 'Função' chamada, mas um operador membro foi chamado em versões anteriores
Observações
Em versões do Visual C++ antes do Visual Studio 2002, um membro era chamado, mas esse comportamento foi alterado e o compilador agora encontra a melhor correspondência no escopo do namespace.
Se um operador membro fosse encontrado, o compilador anteriormente não consideraria nenhum operador de escopo de namespace. Se houver uma correspondência melhor no escopo do namespace, o compilador atual a chama corretamente, enquanto os compiladores anteriores não a considerariam.
Este aviso deve ser desativado depois de portar com êxito o código para a versão atual. O compilador pode dar falsos positivos, gerando este aviso para o código onde não há mudança de comportamento.
Este aviso está desativado por padrão. Para obter mais informações, consulte Avisos do compilador que estão desativados por padrão.
Example
O exemplo a seguir gera 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;
}