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

标签 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";
    }

出现以下错误:

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()’

最佳答案

声明成员函数。

template<typename T>
    class der : public base{
    public:
        void func();
    };

您可能希望或可能不希望在派生类中覆盖的成员函数没有自动声明 - 您必须显式声明和定义它们。派生类是否实现为模板对此无关紧要。

关于c++ - 如何定义来自非模板基类的成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5472368/

相关文章:

c++ - 特定模板类型的功能特化

c++ - 为什么我的可变参数模板实例化不起作用?

java - java中的抽象列表和列表

c++ - 指向抽象类型的指针数组

Java 抽象方法的通配符返回类型

c++ - 如何在 QFileDialog 上设置选定的过滤器?

C++ 未处理的异常 : An invalid parameter was passed to a function that considers invalid parameters fatal

c++ - 为什么我们不能为继承定义一个匿名类?

c++ - 在参数包中分配模板包装器

c++ - 我是在用这个微不足道的方法调用转发类重新发明轮子吗?