Share via


編譯器錯誤 C2593

'operator identifier' 模稜兩可

對多載運算子定義了一個以上可能的運算子。

如果您在一個或多個實質參數上使用明確轉型,可能會修正這項錯誤。

下列範例會產生 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++ 型別是固定大小的型別 BYTEWORDDWORDLONG。 所有整數型別都必須轉型為上述其中一種型別,才能進行序列化。 浮點型別必須使用 CArchive::Write() 成員函式加以封存。

下列範例顯示將浮點變數 (f) 保存至 ar 的方式:

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