应该在Son中的重写方法能够在C ++中调用父模板类的重写方法吗?

时间:2016-09-16 16:13:31

标签: c++ templates inheritance override

我用虚拟方法定义了一个模板类:

template<class T> 
class Father{
   public:
   virtual void foo(int a);
 }

然后我定义了一个类,继承自模板类,并重写其方法:

class Son: public Father<int>{
  public:
  virtual void foo(int a);
}

Son中的重写方法是否能够调用父的重写方法?

我尝试了以下3个实现,但似乎没有编译:

1)在Son.cpp

void Son::foo(int a){
     Father::foo(a);      
}

2)在Son.cpp:

   void Son::foo(int a){
     ::foo(a);      
    }

3)在Son.h中

 using Father::foo;
 virtual void foo(int a);

在Son.cpp

  void Son::foo(int a){
     Father::foo(a);      
    }

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

我刚刚解决了这个问题:答案似乎是YES并且以下代码正在编译:

void Son::foo(int a){
     Father<int>::foo(a);      
}