2016-09-16 46 views
-1

我已經定義模板類與虛擬方法:Son中的重寫方法是否可以調用C++中父模板類的重寫方法?

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

我已經然後定義的類,從模板類繼承,並覆蓋其方法:

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

應在覆蓋方法兒子能夠稱呼父親的重寫方法嗎?

我嘗試了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); 

I n Son.cpp

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

有沒有辦法做到這一點?

+0

你的第一次嘗試編譯:wandbox鏈接](http://melpon.org/wandbox/permlink/RXzoLsy8AUVJjw8p) –

+0

事實上,我剛剛發現以下選項4正在編譯:void Son :: foo(int a){ \t父親 :: foo(a); \t} – ellysisland

回答

1

我剛剛解決了這個:答案似乎是肯定的和下面的代碼編譯:

void Son::foo(int a){ 
    Father<int>::foo(a);  
} 
相關問題