我有一个继承自接口和基类的派生类。接口定义了一个虚函数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
的具体函数定义不足以作为接口虚函数的实现?
答案 0 :(得分:0)
不确定我理解这个问题。
BaseClient
is-not-A ITestClient
( is-A 关系是所需的继承属性)。因此BaseClient
中的定义不能是该接口函数的实现。
你朋友的一个儿子的儿子开始看起来像你,因为你把他带到你的车里,你自己的儿子却会。这就是等效关系。