如何定义来自非模板基类的成员函数

dee*_*eeJ 0 c++ templates abstract

我有一个非模板化的抽象基类.如何在派生类之外定义纯虚函数?

    #include <iostream>

    class base {
         public:
         virtual void func() = 0;
    };

    template<typename T>
    class der : public base{
    };

    template<typename T>
    void der<T>::func()
    {
         std::cout<<"In Der";
    }
Run Code Online (Sandbox Code Playgroud)

出现以下错误:

template.cpp:13: error: no ‘void der<T>::func()’ member function declared in class ‘der<T>’
template.cpp:13: error: template definition of non-template ‘void der<T>::func()’
Run Code Online (Sandbox Code Playgroud)

Eri*_*rik 5

声明成员函数.

template<typename T>
    class der : public base{
    public:
        void func();
    };
Run Code Online (Sandbox Code Playgroud)

您可能希望或不希望在派生类中覆盖成员函数的自动声明 - 您必须显式声明和定义这些函数.派生类是否作为模板实现并不重要.