Compartir a través de


Error del compilador C2593

"operator identifier" es ambiguo

Observaciones

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.

Ejemplos

En el ejemplo siguiente se genera la advertencia 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 ));