[英]Override keyword throwing an error while compile
我有基礎課
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: expected ';' at end of member declaration
error: 'override' does not name a type
error: expected ';' at end of member declaration
error: 'override' does not name a type
g ++版本是4.6。
GCC 4.6不支持override關鍵字。 如果要覆蓋myfunc,只需刪除override關鍵字或將GCC升級到4.7版本。 (參考: https : //blogs.oracle.com/pcarlini/entry/c_11_tidbits_explicit_overrides )
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;
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.