Перегружен оператор typecast int, но после компиляции и запуска кода я получаю ошибку сегментации.
Я отладил свою программу и увидел, что строка кода, где используется typecast, повторяется без завершения, каждый раз вызывая саму функцию typecast,Итак, кто-нибудь может объяснить, что там происходит?
/* IN HEADER */
class ComplexNumber
{
private:
double m_real, m_imaginary;
public:
ComplexNumber(double real = 0.0, double imaginary = 0.0);
ComplexNumber(const ComplexNumber &obj);
ComplexNumber& operator= (const ComplexNumber &obj);
operator int();
};
ComplexNumber::ComplexNumber(double real, double imaginary):
m_real(real), m_imaginary(imaginary)
{
}
ComplexNumber::ComplexNumber(const ComplexNumber &obj):
m_real(obj.m_real), m_imaginary(obj.m_imaginary)
{
}
ComplexNumber& ComplexNumber::operator= (const ComplexNumber &obj)
{
m_real = obj.m_real;
m_imaginary = obj.m_imaginary;
return *this;
}
ComplexNumber::operator int()
{
m_real = static_cast<int>(m_real);
m_imaginary = static_cast<int>(m_imaginary);
return *this;
}
/* IN MAIN */
ComplexNumber obj(3.4, 5.6);
obj = static_cast<int>(obj);
//here it gives seg fault