2012-11-15 72 views
0

因此,我的教师发布了一些我认为根本不起作用的代码,我想对其进行一些说明。他用手中的笔记(这意味着这是正确的)。模板类中的纯虚拟模板函数

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; 
}; 

您将有问题,因为没有办法生成函数来处理所有可能被传递到在编译时该功能的潜在类型。