Klasy reprezentująca wielomiany – problem z operatorem *

0

Witam jestem właśnie w trakcie robienia klasy reprezentującej wielomiany , po drodze natknąłem się na problem z operatorem * mianowicie kompilator wywala błąd dla :

no match for 'operator *' (operand types are 'int' and 'Poly')

Dla odwołania:

P3 = 2 * P1;	

Gdzie P3 i P1 to obiekty klasy .

Mój konstruktor

Poly(int new_number=0)
{
data.push_back(new_number);			
}

Oraz deklaracja operatora *

Poly operator * (const Poly & second) const

W jaki sposób mogę ominąć ten błąd nie tworząc drugiego operatora * dla inta i obiektu klasy Poly

0

Poly ma konstruktor przyjmujący int, więc zdefiniuj operatora jako wolną funkcję:

Poly operator*(Poly, Poly const&);

więcej: https://dsp.krzaq.cc/post/304/jak-przeladowywac-operatory-w-mojej-klasie/

0

Rozumiem że chodziło o zdefiniowanie operatora poza klasą - zadziałało . Wyjaśnisz jak to działa? Czy P3 = 2 * P1 to ta dwójka staje się obiektem klasy?

0

Tak.

1 użytkowników online, w tym zalogowanych: 0, gości: 1