Предположим, у меня есть базовый класс, как показано ниже:
template <typename T>
class Base {
// implementation
void do_something() { /* ... */ } ;
};
затем я создаю класс Derived
, как показано ниже, и переопределяю метод do_something()
:
template <typename T>
class Derived : public Base<T> {
// implementation
void do_something() { /* ... */ } ;
};
Я знаю, что виртуализация не работает в шаблонах классов, и я просто скрываю реализацию методов. но я хочу хранить кучу производных классов и базовых классов в векторе (я не хочу использовать стирание типов или полиморфизм),
мой вопрос: учитывая, что static_cast
из класса Derived
в базовый класс дает мне do_something
базового класса, есть ли способ сохранить их как базовые классы, в то время как каждый из них имеет свою реализацию класса do_something()
?