说我有一个定义为的接口:
class MyInterface : public virtual ObjectInterface {
public:
virtual bool MyFunc() = 0;
};
然后我在头文件中有一个采用此接口的类:
class Concrete : public virtual MyInterface, public Object {
};
然后在我的实现文件中:
bool Concrete::MyFunc() {
return false;
}
为什么会出现错误:线外声明?我尝试将const
和override
添加到实现中,但是遇到类似的错误。
答案 0 :(得分:3)
必须在类定义中声明所有成员函数。您不能在类定义之后定义成员函数,除非已在定义内声明了该函数。
成员函数是否从基类覆盖(纯)虚函数在这方面没有区别。
在这种情况下:
class Concrete : public virtual MyInterface, public Object {
bool MyFunc() override;
};