【问题标题】:pure virtual template functions in a template class模板类中的纯虚模板函数
【发布时间】:2012-11-04 10:33:21
【问题描述】:

所以我的导师分发了一些我认为根本不起作用的代码,我想对此进行澄清。他在他的手稿中使用了这个(这意味着这是正确的)。

template<class T>
class State
{
public:
    virtual void Enter(T*)=0;
    virtual void Execute(T*)=0;
    virtual void Exit(T*)=0;
    virtual ~State(){};
};

我可以看到他正在尝试做什么,但我相信编译器根本不会喜欢它。 任何人都可以帮助解释为什么这样做或不起作用。

【问题讨论】:

  • 为什么你认为它不起作用?

标签: class function templates pure-virtual


【解决方案1】:

这应该可以工作,因为没有一个成员函数不是模板成员函数。基类参数可以在编译时推导出来,而实际调用的函数仍然可以在运行时确定。

如果你有这个:

class Foo
{
    template< typename T > virtual void Bar( T * ) = 0;
};

您会遇到问题,因为无法生成函数来处理编译时可能传递给此函数的所有潜在类型。

【讨论】:

    猜你喜欢
    • 2014-03-08
    • 2019-11-19
    • 2017-06-28
    • 2021-11-08
    • 1970-01-01
    • 2020-01-30
    • 2013-10-07
    • 2012-07-03
    相关资源
    最近更新 更多