Я изучаю c ++, столкнулся с проблемой с оператором преобразования. Я создаю сложный класс, который может выполнять базовые c операции над комплексным числом.
class complex
{
double real, img;
public:
complex(double re=0,double im=0){
real = re;
img = im;
}
double get_real() const{
return real;
}
double get_img() const{
return img;
}
};
Я перегружен + оператор:
complex operator+(complex a,complex b){
return complex(a.get_real()+b.get_real(),a.get_img()+b.get_img());
}
С этим добавлением кода с двойным / целым числом с комплексное число работает нормально из-за конструктора.
complex a(2,4);
complex b = 1+a;
Но когда я использую оператор преобразования внутри класса
operator int(){
int re = real;
return re;
}
Добавление с двойной / int согнутой работой
b = 1 + a;
// ambiguous overload
Это кажется странным, кто-нибудь может объяснить, как добавление оператора преобразования создает эту двусмысленность? Я не смог найти ни одного ресурса в сети.