Изменение виртуальных функций для добавления новых параметров - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть базовый класс A (который никогда не создается в его базовой форме), который является родителем для многих дочерних классов. A имеет функцию, которую наследует каждый дочерний класс, которая называется func. Каждый дочерний класс имеет различную реализацию func, но вход и выход каждого одинаковы.

в A

virtual void func();

и в каждом дочернем классе

void func();

Поддерживая этот код, я понял, что на самом деле хочу передать параметр этой функции, например, так:

virtual void func(float foo);

Тогда я, очевидно, наивно полагал, что каждый класс, унаследовавший эту функцию, сможет потом используйте этот параметр, но, похоже, теперь мне нужно будет go пройти через каждый дочерний класс и добавить float foo к их реализации определения func(), добавив void func(float foo); для каждого из них. Разве такого рода дубликаты не изменяют то, что OOP должно помочь избежать? Я могу получить доступ к членам базового класса без необходимости дублировать их объявления. У меня вопрос: не использую ли я virtual функций, есть ли способ получить поведение, которое я хочу, или это просто что-то, что вызывает боль?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...