Teilen über


Compilerfehler C2593

Der Operator „identifier“ ist mehrdeutig

Bemerkungen

Für einen überladenen Operator ist mehr als ein möglicher Operator definiert.

Dieser Fehler kann behoben werden, wenn Sie eine explizite Umwandlung für einen oder mehrere tatsächliche Parameter verwenden.

Beispiele

Im folgenden Beispiel wird C2593 generiert:

// 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 )
}

Dieser Fehler kann durch Serialisieren einer Gleitkommavariable mithilfe eines CArchive Objekts verursacht werden. Der Compiler identifiziert den << Operator als mehrdeutig. Die einzigen primitiven C++-Typen, die serialisiert werden können, CArchive sind die Typen BYTEmit fester Größe , , WORD, DWORDund LONG. Für die Serialisierung müssen alle ganzzahligen Typen in einen dieser Typen umgewandelt werden. Gleitkommatypen müssen mithilfe der CArchive::Write() Memberfunktion archiviert werden.

Das folgende Beispiel zeigt, wie eine Gleitkommavariable (f) archiviert arwird:

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