簡體   English   中英

覆蓋關鍵字在編譯時拋出錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM