Stworzyłem klasę liczb zespolonych i chciałem napisać też podstawowe działania, zacząłem od mnożenia no i gdy próbuję napisać ten operator wewnątrz klasy dostaję błąd o złej liczbie argumentów.
error: 'Complex Complex::operator*(Complex, Complex)' must take either zero or one argument|
Klasa wygląda tak:
class Complex
{
private:
double Real, Imag;
public:
Complex (double Real=0, double Imag=0)
{
this->Real = Real;
this->Imag = Imag;
};
Complex operator* (Complex c1, Complex c2)
{
Complex c;
c.Real = c1.Real * c2.Real - c1.Imag * c2.Imag;
c.Imag = c1.Real * c2.Imag + c2.Real * c1.Imag;
return c;
}
};
Czytałem, że można napisać funkcję zaprzyjaźnioną do tej klasy i wtedy poza klasą przyjąć dwa argumenty dodając w moim przypadku w klasie Complex
friend Complex operator* (Complex c1, Complex c2);
a operator napisać po za klasą.
Napisałem z użyciem funkcji zaprzyjaźnionej jednak chciałbym to zrobić w klasie, jest jakaś możliwość bez używania funkcji zaprzyjaźnionej?