从非模板基派生模板类

时间:2019-06-27 18:33:48

标签: c++ templates

我正在尝试从Base派生Derived:

class Base
{
public:
    Base() {};
};

template <class T>
class Derived : public Base
{
public:
    Derived::Derived()
    {

    }
};

这给了我以下错误:

  

错误C3254:“衍生”:   类包含显式覆盖'{ctor}',但不是从   包含函数声明的接口

     

注意:请参阅参考   类模板实例化“派生”正在编译

     

错误C3244:   'Derived :: Derived(void)':此方法由'Unknown>'引入   不是按“基础”

我对模板完全陌生,我缺少什么简单的步骤?这似乎是一件很基本的事情。

1 个答案:

答案 0 :(得分:6)

您需要省略“ Derived ::”前缀。您只能使用它来引用已继承或注入到Derived类的名称空间中的符号。因此,唯一有意义的前缀是“ Base ::”。与模板无关。

class Base
{
public:
    Base() {};
};

template <class T>
class Derived : public Base
{
public:
    Derived() {}
};

查看有效的Live Demo