从非模板基派生模板类

Jef*_*ica 4 c++ templates

我正在尝试让Derived从Base派生:

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

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

    }
};
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

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

注意:请参见对正在编译的类模板实例化“派生”的引用

错误C3244:'Derived :: Derived(void)':此方法由'Unknown>'引入,而不是'Base'引入

我是模板的新手,我缺少哪些简单的步骤?这似乎是一件很基本的事情。

And*_* H. 6

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

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

template <class T>
class Derived : public Base
{
public:
    Derived() {}
};
Run Code Online (Sandbox Code Playgroud)

观看正在运行的Live Demo