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 - 如何使用 Jackson 实例化具有嵌套抽象字段的类?

c++ - 我可以将 std::array 转换为切片吗?或者还有什么我可以用的吗?

c++ - 编译时如何生成类似 OR 的语句? C++

C++ - 解决使用静态和动态库时的链接器错误

python - 强制在所有继承类中实现一个方法

Java - 强制执行已实现的方法

c++ - 如何在 Linux 上使用 C++ 和 ffmpeg 从 USB 音频设备录制音频?

c++ - 在字符串的每个第 n 个元素之后插入字符(不使用 stringstream)