niejednoznaczność przeciążonych operatorów

Programowanie w języku C i językach pochodnych, jak C++, C#
neldam
Posty: 1
Rejestracja: 11 cze 2007, 20:16

niejednoznaczność przeciążonych operatorów

Post autor: neldam » 13 cze 2007, 11:23

WItam, mam problem z takim oto kodem :

Kod: Zaznacz cały

class bignum {
 
private:
//tu sa rózne składnki

public:
  bignum();
  ~bignum();
  bignum(double dbl);
  bignum(long lng);
  bignum(bignum&);
  
  operator double();
  operator long();


  //******************* operatory do dzialan arytmetycznych
  friend bignum operator+ (bignum& lft, bignum& rgh);
  friend bignum operator+ ( bignum& lft,   long rgh);
  friend bignum operator+ ( bignum& lft, double& rgh);
  bignum& operator+=(bignum& rgh);
  bignum& operator+=( long rgh);
  bignum& operator+=(double& rgh);

//podobnie jest dla odejmowania, mnożenia  i dzielenia

  bignum& operator= ( long rgh);
  bignum& operator= (double rgh);
  bignum& operator= (bignum& rgh);

 friend bignum ToBignum ( long liczba);
  friend bignum ToBignum (double& liczba, int prec=32);
//pozostałe metody
};
Jest to biblioteka bardzo dużych liczb.

Gdy w innym miejscu programu chę sobie zrobić
ob_bignum1 = ob_bignum2 + ob_bignum3;
wyskakuje błąd że operator przypisania jest niejednoznaczny
ma to związek z operatorem rzutowania double() i long() (po ich dodaniu wyskoczyły te błędy).

Czy mógłby ktoś mi powiedzieć czemu tak sie dzieje??
Z góry dziękuje