Używałem wyszukiwarki google ale nie znalazłem wyczerpującej odp .
Jak za pomocą szablonu przeładować operator np * ? Dla przykładu: Mam klasę ułamek która posiada 2 zmienne int, i mogę mieć utworozne obiekty dynamicznie i statycznie. Nie chcę osobno przeładowywać operatora * dla obiektów statycznych i dynamicznych. Czy jest to możliwe? Albo istnieje jakiś lepszy mechanizm?
Idąc dalej za ciosem, co jeśli dwa obiekty które będę mnożył są utworzone dynamicznie i wynik chciałbym zwrócić do obiektu statycznego. To musiałbym kilka razy przeładować operator z rożnymi argumentami. Kod dla zobrazowania problemu:
class ulamek
{
int licznik;
int mianownik;
public:
ulamek(int x, int y) :licznik(x), mianownik(y) {};
ulamek operator *(const ulamek & b)
{
return ulamek(this->licznik * b.licznik, this->mianownik * b.mianownik);
}
}
I w mainie:
int main()
{
ulamek wynik(1, 1);
ulamek UL1(1, 2);
ulamek UL2(3, 4);
wynik = UL1 * UL2; // wynik ma być równy (1*3,2*4)
}
Jeżeli źle zrozumiałem szablony i nie da się tak tego zrobić to poszukuję rozwiązania jak tak żeby nie klepać kodu dla każdego przypadku.
Z góry dziękuję za pomoc!