przeciazenie operatora+

0

czy da sie zrobic konwersie dla przeciazonego operatora+?

przykladowo mamy kase kart, bieg i obiekty
kart a1, a2, w1;
bieg b1, b2, w2;

czy dla danych wyrazen:
w1 = a1 + a2
w1 = a1 + b1;
w2 = b1 + b2;
w2 = b1 + a1;

trzeba 4 razy przeciezy operator??

1

Nie koniecznie, wystarczą konwersje:
kart::operator JakisTamTypNpDouble()const {...}
bieg::operator JakisTamTypNpDouble()const {...}
oraz konstruktory:
kart::kart(const JakisTamTypNpDouble &J) {...}
bieg::bieg(const JakisTamTypNpDouble &J) {...}
ten JakisTamTypNpDouble może to być jedna z tych klas np kart (prościej się dodają)

0

To zależy od wielu rzeczy.
Jeśli masz odpowiednie strukturę klas to wystarczy odpowiednie wykorzystanie polimorfizmu.
Inna możliwość to tak jak napisał _13th_Dragon konwersje automatyczne.
Szablony też mogą być dobrym rozwiązaniem.
Każde z tych rozwiązań zależy od tego jakie masz klasy i jak je zaprojektowałeś.

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