Я только что прочитал статью о шаблоне любопытных повторяющихся шаблонов.И вы можете использовать его для моделирования виртуальных функций с помощью шаблонов.
Например:
template<class T>
struct A
{
void func() { static_cast<T*>(this)->func(); }
};
struct B : public A<B>
{
void func() { cout << "B" << endl; }
};`
Однако, если у нас много подклассов из A и мы хотим поместить их все в вектор, напримерvector<A*>
это невозможно, когда вы используете шаблоны, и вам приходится использовать обычный полиморфизм с виртуальными функциями в базовом классе.
Что бы предложить проектное решение для решения этой проблемы?Потому что я хочу использовать шаблоны, но также могу использовать все подклассы вместе в контейнере.