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ę!

questionAnswers(4)

yourAnswerToTheQuestion