我有一个非模板化的抽象基类。如何在派生类之外定义纯虚函数?
#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/