Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Identyfikator operatora jest niejednoznaczny
Uwagi
Dla przeciążonego operatora zdefiniowano więcej niż jeden możliwy operator.
Ten błąd można naprawić, jeśli używasz jawnego rzutu na co najmniej jeden rzeczywisty parametr.
Przykłady
Poniższy przykład generuje kod 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 )
}
Ten błąd może być spowodowany serializacją zmiennej zmiennoprzecinkowych przy użyciu CArchive obiektu. Kompilator identyfikuje << operator jako niejednoznaczny. Jedynymi typami pierwotnymi języka C++, które CArchive mogą serializować, są typy BYTEo stałym rozmiarze , , WORDDWORDi LONG. Wszystkie typy liczb całkowitych należy rzutować do jednego z tych typów w celu serializacji. Typy zmiennoprzecinkowe muszą być archiwizowane przy użyciu funkcji składowej CArchive::Write() .
W poniższym przykładzie pokazano, jak zarchiwizować zmienną zmienną zmienną (f) w celu archiwizacji ar:
ar.Write(&f, sizeof( float ));