可能重复:
成员函数模板可以是虚拟的吗?
在基类中,函数my_func
被定义为虚拟的。但是,在派生类中我想必须my_func
是一个模板方法。这可能吗?
似乎不是。我收到错误“无法分配抽象类型的对象”,我认为这与编译器不承认my_func
基类中虚拟的覆盖有关。这是否揭示了一个糟糕的设计?
非常感谢。
更新:感谢您的回答。你们中的一些人建议我应该发布一些代码,所以就在这里。在基类中:
virtual void Fill(EventInfo* info, EasyChain* tree, vector<Muon*>& muons, vector<Electron*>& electrons, vector<Jet*>& jets, LorentzM& met) = 0;
但是在派生类中我想要:
template<typename _Jet>
void Fill(EventInfo* info, EasyChain* tree, vector<Muon*>& muons_in, vector<Electron*>& electrons_in, vector<_Jet>& jets_in, LorentzM& met){
从您的回答中,我了解到该问题的解决方案是在派生类中定义另一个函数:
void Fill(EventInfo* info, EasyChain* tree, vector<Muon*>& muons, vector<Electron*>& electrons, vector<Jet*>& jets, LorentzM& met){
//
}
但是,这个函数和模板函数在 be 的情况下是一样的_Jet
,Jet*
那不也是个问题吗?
有人在这里提出了一个设计问题,我想这是真的,我必须考虑如何解决这个问题。