Delen via


Compilerfout C2593

'operator-id' is dubbelzinnig

Opmerkingen

Er wordt meer dan één mogelijke operator gedefinieerd voor een overbelaste operator.

Deze fout kan worden opgelost als u een expliciete cast gebruikt voor een of meer werkelijke parameters.

Voorbeelden

In het volgende voorbeeld wordt C2593 gegenereerd:

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

Deze fout kan worden veroorzaakt door het serialiseren van een variabele met drijvende komma met behulp van een CArchive object. De compiler identificeert de << operator als dubbelzinnig. De enige primitieve C++-typen die CArchive kan serialiseren, zijn de typen met vaste grootte BYTE, WORD, DWORD en LONG. Alle typen gehele getallen moeten worden gecast naar een van deze typen voor serialisatie. Drijvende-komma-typen moeten worden gearchiveerd d.m.v. de CArchive::Write() lidfunctie.

In het volgende voorbeeld ziet u hoe u een variabele met drijvende komma (f) kunt archiveren naar ar.

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