2013-04-02 27 views
6

我有基類關鍵詞Override拋出一個錯誤,而編譯

template<typename T> 
Class Base { 
    Base(); 

public: 
    virtual void myfunc()=0; 
} 

我已經派生類

template<typename T> 
Class Derived: public Base<T> { 
    Derived():Base() { 
    } 

public: 
    void myfunc() override; 
} 

當我編譯g++ -std=c++0x,我得到了壓倒一切的函數的錯誤高亮顯示, error: expected ‘;’ at end of member declaration error: ‘override’ does not name a type

g ++版本是4.6。

+2

我認爲你需要指定'myfunc'爲'MYFUNC()'在你的基類,否則倍率虐待形成。 – maditya

+0

抱歉,輸入問題時出現錯字 – user592748

回答

7

g ++ 4.6.3不支持C++ 11的override功能。當你拿走合成錯誤時,這段代碼在4.7.2和Clang中編譯得很好。

此外,我想這是你的意思是你的代碼是:

template <typename T> 
class Base { 
    Base(); 

    public: 
     virtual void myfunc() = 0; 
}; 

template <typename T> 
class Derived : public Base<T> { 
    Derived() : Base<T>() {} 

    public: 
     void myfunc() override; 
};