一个基类中的MI函数定义不足以用于另一个基类的虚函数

时间:2017-06-15 23:50:17

标签: c++ c++11 multiple-inheritance virtual-functions vtable

我有一个继承自接口和基类的派生类。接口定义了一个虚函数GetId,它在另一个基类中实现。

class ITestClient
{
  public:
    virtual int GetId() = 0;
};

class BaseClient
{
  public:
    int GetId();
}

int BaseClient::GetId()
{
  return 10;
}

class TestClient : public ITestClient, public BaseClient {
};

我得到unimplemented pure virtual method 'GetId'。所以我可以这样做来修复编译错误......

class TestClient : public ITestClient, public BaseClient {
  int GetId()
  {
    return BaseClient::GetId();
  }
};

为什么BaseClient的基类GetId的具体函数定义不足以作为接口虚函数的实现?

1 个答案:

答案 0 :(得分:0)

不确定我理解这个问题。 BaseClient is-not-A ITestClient is-A 关系是所需的继承属性)。因此BaseClient中的定义不能是该接口函数的实现。

你朋友的一个儿子的儿子开始看起来像你,因为你把他带到你的车里,你自己的儿子却会。这就是等效关系。