Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 ));