如何实现虚拟接口C ++

时间:2019-05-13 17:34:54

标签: c++

说我有一个定义为的接口:

class MyInterface : public virtual ObjectInterface {
 public:

   virtual bool MyFunc() = 0;
};

然后我在头文件中有一个采用此接口的类:

class Concrete : public virtual MyInterface, public Object {

};

然后在我的实现文件中:

bool Concrete::MyFunc() {
    return false;
}

为什么会出现错误:线外声明?我尝试将constoverride添加到实现中,但是遇到类似的错误。

1 个答案:

答案 0 :(得分:3)

必须在类定义中声明所有成员函数。您不能在类定义之后定义成员函数,除非已在定义内声明了该函数。

成员函数是否从基类覆盖(纯)虚函数在这方面没有区别。

在这种情况下:

class Concrete : public virtual MyInterface, public Object {
    bool MyFunc() override;
};