问题描述
c++的模板类里写了一个虚函数,在编译时虽然没有调用却被编译导致整体编译失败
相关代码
#include <iostream>
#include <set>
using namespace std;
template<typename T>
class Base
{
public:
virtual void insert(int e){c.push_back(e);}
protected:
T c;
};
class Derived:public Base<std::set<int>>
{
public:
virtual void insert(int e){c.insert(e);}
};
int main()
{
Derived d;
d.insert(3);
return 0;
}
我用一个普通类继承该模板类,然后覆盖掉原本的虚函数。但是在实际编译的过程中由于模板实例化导致基类的虚函数被编译,继而这个模板的基类无法通过编译。理论上这里基类原本的虚函数是不会被调用的,却因为模板初始化的问题导致编译失败,所以请教下这里该怎么解决?
把基类的虚函数改成纯虚,不要定义。
如果你不期望它被使用,就不要实现了。