Compartir a través de


Error del compilador C2593

"operator identifier" es ambiguo

Hay más de un operador definido para un operador sobrecargado.

Este error puede corregirse si usa una conversión explícita en uno o varios parámetros reales.

El ejemplo siguiente genera el error 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 error puede deberse a la serialización de una variable de punto flotante con un objeto CArchive. El compilador identifica el operador << como ambiguo. Los únicos tipos primitivos de C++ que CArchive puede serializar son los tipos de tamaño fijo BYTE, WORD, DWORD y LONG. Todos los tipos enteros deben convertirse en uno de estos tipos para la serialización. Los tipos de punto flotante deben archivarse con la función miembro CArchive::Write().

El ejemplo siguiente muestra cómo archivar una variable de punto flotante (f) para archivar ar:

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