Wywoływanie metody klasy Child podczas przetwarzania listy obiektów klasy Parent
To pytanie wydaje się być dość pospolite, ale nie znalazłem niczego, gdy kumulowałem StackOverflow lub interwebs.
Natknąłem się na metodę w klasie C ++, która pobiera listę (na przykład)Parent
przedmioty. W tym przykładzie załóżmy, że istnieją dwie klasy, z których pochodząParent
: Child1
iChild2
.
Dla każdego obiektu na liście metoda sprawdza, czy obiekt jest typuChild2
(poprzezIsOfType()
metoda implementowana przez każdą klasę), a jeśli tak, wywołuje metodę dostarczaną tylko przezChild2
klasa.
Czy jest to problem, ponieważ metoda przetwarzania list nie może traktować każdego obiektu tak samo? Widziałem to również w innych miejscach, więc wydaje się, że może to być powszechna praktyka do pewnego stopnia.
Jedną z opcji może być zadeklarowanieChild2
metoda wParent
klasa tak, że wszystkoParent
obiekty go implementują. Jednak w tym przypadku tylkoChild2
klasa faktycznie zastosowałaby każde zachowanie podczas nadpisywania metody.
Twoje myśli? Z góry dziękuję!