Poderá receber um "erro C2593: ' operador << ' é ambíguo" mensagem de erro quando tenta passar uma variável __int64 para o operador ostream <<

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 168440
Sintomas
Se tentar passar uma variável __int64 para o operador ostream <<, obterá o seguinte erro:
Erro C2593: ' operador << ' é ambíguo
Causa
Não existe nenhum operador << para tipo __int64 definido para a classe ostream.
Resolução
Definir uma versão própria do operador <<. A secção de código de exemplo seguinte mostra uma solução simples para << operador que converte a variável __int64 um carácter * escreva e transmite-a ostream << operador.
Ponto Da Situação
A Microsoft confirmou que este erro ocorre nos produtos do Microsoft listados na secção "Aplica-se a".

Este problema foi corrigido no Microsoft Visual C++ .NET.
Mais Informação
O programa de exemplo seguinte demonstra o problema e solução alternativa:
//Sample.cpp// Compiler Options : /GX//#define WORKAROUND   //Uncomment this line to workaround#include<iostream>using namespace std;#ifdef WORKAROUNDstd::ostream& operator<<(std::ostream& os, __int64 i ){    char buf[20];    sprintf(buf,"%I64d", i );    os << buf;    return os;}#endifint main(){__int64  i64;cout << i64 ;return 0;}				

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 168440 - Última Revisão: 05/26/2005 21:44:31 - Revisão: 3.0

The Standard C++ Library

  • kbmt kbbug kbcrt kberrmsg kbfix kbnoupdate KB168440 KbMtpt
Comentários