Вопрос, заданный другими, заключается в том, должен ли метод быть виртуальным или статическим.
Полиморфизм основан на идее, что вы вызываете поведение конкретного экземпляра объекта независимо от того, какой тип ссылки на него у вас есть.
base& somefunction(); // may return base or derived objects
base &b = somefunction();
b.method();
Теперь, если метод поведение изменится с base на производное и вам нужно поведение реального экземпляра , на который вы ссылаетесь тогда вам нужен полиморфизм и, следовательно, виртуальный метод. Тот факт, что метод может использовать или не использовать данные элемента, не имеет значения, важная часть заключается в том, что это поведение привязано к конкретному экземпляру.
С другой стороны, статические методы связаны с классом. То есть, это поведение класса, с которым вы имеете дело, а не поведение ссылающегося экземпляра. Таким образом, даже если приведенный выше синтаксис можно использовать, он вызовет статический метод в классе base , поскольку это тот класс, с которым вы имеете дело.
Нет оснований определять, что какой-либо из вариантов дизайна, с которым вы работаете, лучше, чем другой, без более глубокого знания предметной области. Я надеюсь, что приведенные выше рассуждения помогут вам принять решение.