I want to overload operator/ in a class. to do it I want to define private inversion method which calculate inversion of first complex number(1/Z1) and then multiply by the second complex number. I developed the code which give me an error
Exc20.cc: In function ‘ComplexNumber operator/(const ComplexNumber&, const ComplexNumber&)’:
Exc20.cc:75:31: error: ‘inversion’ was not declared in this scope
return ComplexNumber(com1 * inversion(com2));
and the body of the code is
#include <iostream>
#include <cmath>
using namespace std;
class ComplexNumber
{
public:
double re;
double im;
ComplexNumber(double real = 0, double imag = 0): re{real}, im{imag} {};
private:
ComplexNumber& inversion(const ComplexNumber& com);
};
ComplexNumber& ComplexNumber::inversion(const ComplexNumber& com)
{
re = com.re/sqrt(com.re*com.re + com.im*com.im);
im = -com.im/sqrt(com.re*com.re + com.im*com.im);
return *this;
}
ComplexNumber operator*(const ComplexNumber& com1,const ComplexNumber& com2)
{
return ComplexNumber(com1.re*com2.re-com1.im*com2.im,com1.re*com2.im+com1.im*com2.re);
}
ComplexNumber operator/(const ComplexNumber& com1, const ComplexNumber& com2)
{
return ComplexNumber(com1 * inversion(com2));
}
int main()
{
ComplexNumber com1(3,7);
ComplexNumber com2(4,2);
com2.print();
com3=com1/com2;
com3.print();
}