Kompilatorfel C2593

Operatoridentifieraren är tvetydig

Anmärkningar

Mer än en möjlig operator definieras för en överbelastad operator.

Det här felet kan åtgärdas om du använder en explicit gjutning på en eller flera faktiska parametrar.

Exempel

I följande exempel genereras 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 )
}

Det här felet kan orsakas av serialisering av en flyttalsvariabel med hjälp av ett CArchive objekt. Kompilatorn identifierar operatorn << som tvetydig. De enda primitiva C++-typerna som CArchive kan serialisera är typerna BYTEmed fast storlek , WORD, DWORDoch LONG. Alla heltalstyper måste gjutas till någon av dessa typer för serialisering. Flyttalstyper måste arkiveras med medlemsfunktionen CArchive::Write() .

I följande exempel visas hur du arkiverar en flyttalsvariabel (f) för att arkivera ar:

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