-1
私は仮想メソッドでテンプレートクラスを定義している:私は、テンプレートクラスから継承し、クラスを定義し、そのメソッドをオーバーライドしているSonのオーバーライドメソッドは、C++でFatherテンプレートクラスのオーバーライドされたメソッドを呼び出せますか?
template<class T>
class Father{
public:
virtual void foo(int a);
}
:
class Son: public Father<int>{
public:
virtual void foo(int a);
}
がオーバーライドするメソッドでシャルを息子は父親の優先メソッドを呼び出すことができますか?
Iは3つの以下の実装を試みたが、いずれもコンパイルするようだ:Son.cppで)
1)Son.cpp
void Son::foo(int a){
Father::foo(a);
}
で:
void Son::foo(int a){
::foo(a);
}
3)でSon.h
using Father::foo;
virtual void foo(int a);
I n Son.cpp
void Son::foo(int a){
Father::foo(a);
}
これを行う方法はありますか?答えはYESであると思われると、次のコードはコンパイルされています:
あなたの最初の試みは、コンパイル:[wandboxリンク](http://melpon.org/wandbox/permlink/RXzoLsy8AUVJjw8p) –
実際には、次のオプション4がコンパイルされていることがわかりました:void Son :: foo(int a){ \t父親 :: foo(a); \t} –
ellysisland