Sdílet prostřednictvím


Chyba kompilátoru C2593

Identifikátor operátoru je nejednoznačný.

Poznámky

Pro přetížený operátor je definován více než jeden možný operátor.

Tato chyba se může opravit, pokud použijete explicitní přetypování jednoho nebo více skutečných parametrů.

Příklady

Následující příklad vygeneruje 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 )
}

Tato chyba může být způsobena serializací proměnné s plovoucí desetinou čárkou pomocí objektu CArchive . Kompilátor identifikuje << operátor jako nejednoznačný. Jedinými primitivními typy C++, které CArchive lze serializovat, jsou typy BYTEs pevnou velikostí , WORD, DWORDa LONG. Všechny celočíselné typy musí být přetypován na jeden z těchto typů pro serializaci. Typy s plovoucí desetinou čárkou musí být archivovány pomocí CArchive::Write() členské funkce.

Následující příklad ukazuje, jak archivovat proměnnou s plovoucí desetinou čárkou (f) pro archivaci ar:

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