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 ));