Чисто виртуальные шаблонные функции в шаблонном классе
Поэтому мой инструктор раздал некоторый код, который, я считаю, не работает вообще, и я хочу получить некоторые разъяснения по нему. Он использовал это в своих заметках (это подразумевает, что это правильно).
template<class T>
class State
{
public:
virtual void Enter(T*)=0;
virtual void Execute(T*)=0;
virtual void Exit(T*)=0;
virtual ~State(){};
};
Я могу видеть, что он пытается сделать, но я верю, что компилятору это совсем не понравится. Может кто-нибудь помочь объяснить, почему это работает или не работает.
1 ответ
Это должно работать, поскольку ни одна из функций-членов не является функциями-членами шаблона. Аргументы базового класса могут быть выведены во время компиляции, а фактическая функция для вызова все еще может быть определена во время выполнения.
Если у вас было это:
class Foo
{
template< typename T > virtual void Bar( T * ) = 0;
};
У вас могут возникнуть проблемы, поскольку нет способа генерировать функции для обработки всех потенциальных типов, которые могут быть переданы в эту функцию во время компиляции.