Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az "operátor azonosítója" nem egyértelmű
Megjegyzések
Egy túlterhelt operátorhoz több lehetséges operátor van definiálva.
Ez a hiba akkor javítható, ha egy vagy több tényleges paraméterhez explicit castet használ.
Példák
A következő példa C2593-at hoz létre:
// 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 )
}
Ezt a hibát egy lebegőpontos változó objektummal CArchive történő szerializálása okozhatja. A fordító nem egyértelműként azonosítja az << operátort. Az egyetlen primitív C++ típus, amely CArchive szerializálható, a rögzített méretű típusokBYTE, WORDés DWORDLONGa . A szerializáláshoz az összes egész típust ezen típusok egyikére kell leadni. A lebegőpontos típusokat a CArchive::Write() tagfüggvény használatával kell archiválni.
Az alábbi példa bemutatja, hogyan archiválhat egy lebegőpontos változót (f) az archiváláshoz ar:
ar.Write(&f, sizeof( float ));