use*_*748 7 c++ overriding g++ c++11
我有基础课
template<typename T>
Class Base {
Base();
public:
virtual void myfunc()=0;
}
Run Code Online (Sandbox Code Playgroud)
我派上课了
template<typename T>
Class Derived: public Base<T> {
Derived():Base() {
}
public:
void myfunc() override;
}
Run Code Online (Sandbox Code Playgroud)
当我编译时g++ -std=c++0x
,我得到错误,突出显示重写函数,
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不支持override
C++ 11 的功能.当你拿走合成错误时,这段代码在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;
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10528 次 |
最近记录: |