У меня есть базовый класс 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
функций, есть ли способ получить поведение, которое я хочу, или это просто что-то, что вызывает боль?