所以我的导师分发了一些我认为根本不起作用的代码,我希望得到一些澄清。他手里拿着这个笔记(这意味着这是正确的)。
template<class T>
class State
{
public:
virtual void Enter(T*)=0;
virtual void Execute(T*)=0;
virtual void Exit(T*)=0;
virtual ~State(){};
};
我可以看到他想要做什么,但我相信编译器根本不会喜欢它。 任何人都可以帮助解释为什么这样做或不起作用。
答案 0 :(得分:2)
这应该有效,因为没有任何成员函数不是模板成员函数。可以在编译时推导出基类参数,并且仍然可以在运行时确定要调用的实际函数。
如果你有这个:
class Foo
{
template< typename T > virtual void Bar( T * ) = 0;
};
你会遇到问题,因为没有办法生成函数来处理编译时可能传递给这个函数的所有潜在类型。