Override keyword throwing compilation error

I have a base class

template<typename T> Class Base { Base(); public: virtual void myfunc()=0; } 

I got a class

 template<typename T> Class Derived: public Base<T> { Derived():Base() { } public: void myfunc() override; } 

When I compile g++ -std=c++0x , I get an error with the override function highlighted, error: expected ';' at end of member declaration error: expected ';' at end of member declaration error: 'override' does not name a type

Version

g ++ - 4.6.

+6
source share
2 answers

g ++ 4.6.3 does not support the override function in C ++ 11. When you remove syntax errors, this code compiles in 4.7.2 and Clang.

Also, I think it means that you had in mind your code:

 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; }; 
+7
source
Keyword

override is not supported by GCC 4.6. If you want to override myfunc just delete the override keyword or upgrade GCC to version 4.7. (Link: https://blogs.oracle.com/pcarlini/entry/c_11_tidbits_explicit_overrides )

+8
source

All Articles