Wirtualna funkcja i z iteratorami

0

Mam metodę, która musi być wirtualna i która jednocześnie jako argument musi pobierać iterator. Funkcje z iteratorami pisze się jako szablony, np
template<typename OutputIterator> func(OutputIterator begin, OutputIterator end) {... }

Problem jest w tym, że wirtualne metody nie mogę być jednocześnie metodami szablonowymi. Czy ktoś ma pomysł jak mogę ten problem ominąć, żeby nie tracić ogólności w postaci iteratorów?

Pozdrawiam.

0

Może zrób całą klasę szablonową? Parametryzowana będzie owymi iteratorami, a jej metody będą szablonowe.

0

Myślałem o tym, ale nie chcę robić całek klasy szablonowej tylko dlatego, że jedna metoda powinna być szablonowa.
Jakieś inne pomysły?

0

Sęk w tym, że tego w ramach jednej metody po prostu NIE DA sie osiagnac, chociazby z tego banalnego powodu, ze specjalizacje template'a wygeneruja np. 15 roznych implementacji tej metody, a 'wirtualnosc' jest w stanie obsluzyc tylko ... jedna, poniewaz na te metode przewidziano tylko jedną działkę na vtable. Jesli faktycznie chcesz miec zestaw metod ktore sa wybierane nie na podstawie klasy z ktorej faktycznie pochodza (np. ->wirtualnosc) ani nie na podstawie typow parametrow (->orzeciazenia), ale marzy Ci sie wybieranie metod na podstawie dwoch lub wiecej kryterii, zacznij od zapoznania sie z tematem DOUBLE DISPATCH.

A jezeli nie o to Ci chodziło, to wyelaboruj..

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