一,问题现象
子类使用override标记了虚函数,编译报错marked ‘override‘, but does not override。
二,问题分析
示例代码如下:
——basic.h
#ifndef _BASIC_H
#define _BASIC_H
class Basic {
public:
virtual void func() = 0;
};
#endif //_BASIC_H
——derive.h
#ifndef _DERIVE_H
#define _DERIVE_H
#include "basic.h"
class Derive : public Basic {
public:
virtual void func() override {}
virtual void func(int a) override {}
};
#endif //_DERIVE_H
——main.cpp
#include "basic.h"
#include "derive.h"
int main()
{
Basic *bass = new Derive;
return 0;
}
编译报错如下:
derive.h:15:15: error: ‘virtual void Derive::func(int)’ marked ‘override’, but does not override
virtual void func(int a) override {}
原因是Basic未声明“virtual void func(int a)”,而子类Derive却使用override 标记该函数,故报错marked ‘override‘, but does not override。</