Partilhar via


Erro do compilador C2593

o «identificador do operador» é ambíguo

Observações

Mais de um operador possível é definido para um operador sobrecarregado.

Este erro pode ser corrigido utilizando uma conversão explícita em um ou mais parâmetros reais.

Exemplos

O exemplo a seguir gera C2593:

// C2593.cpp
struct A {};
struct B : A {};
struct X {};
struct D : B, X {};
void operator+( X, X );
void operator+( A, B );
D d;

int main() {
   d +  d;         // C2593, D has an A, B, and X
   (X)d + (X)d;    // OK, uses operator+( X, X )
}

Este erro pode ser causado pela serialização de uma variável de ponto flutuante usando um CArchive objeto. O compilador identifica o operador como ambíguo << . Os únicos tipos C++ primitivos que CArchive podem serializar são os tipos BYTEde tamanho fixo , WORD, DWORDe LONG. Todos os tipos inteiros devem ser convertidos em um desses tipos para serialização. Os tipos de ponto flutuante devem ser arquivados usando a CArchive::Write() função de membro.

O exemplo a seguir mostra como arquivar uma variável de ponto flutuante (f) para arquivar ar:

ar.Write(&f, sizeof( float ));