我有基类
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。
答案 0 :(得分:9)
覆盖关键字。如果要覆盖myfunc,只需删除override关键字或将GCC升级到4.7版本。 (参考:https://blogs.oracle.com/pcarlini/entry/c_11_tidbits_explicit_overrides)
答案 1 :(得分: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;
};