コンパイラ エラー C2593
'operator identifier' があいまいです
オーバーロードされた演算子に対して、複数の可能な演算子が定義されています。
1 つ以上の実際のパラメーターに明示的なキャストを使用すると、このエラーが修正される可能性があります。
次の例では 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 )
}
このエラーは、CArchive
オブジェクトを使用して浮動小数点変数をシリアル化することで発生する可能性があります。 コンパイラは、<<
演算子をあいまいとして識別します。 CArchive
でシリアル化できるプリミティブ C++ 型は、固定サイズの型 BYTE
、WORD
、DWORD
、LONG
のみです。 シリアル化するには、すべての整数型をこれらの型の 1 つにキャストする必要があります。 浮動小数点型は、CArchive::Write()
メンバー関数を使用してアーカイブする必要があります。
次の例は、浮動小数点変数 (f
) をアーカイブ ar
にアーカイブする方法を示しています。
ar.Write(&f, sizeof( float ));