首先,如果已经有其他帖子回答了这个问题,我很抱歉,我找到的所有类似帖子都涉及到钻石继承方案或定义函数,而这个问题不是这样。
简而言之,我想知道是否可能让一个类从两个其他类继承,其中两个子类具有相同名称和参数的函数,但在一个子类中定义,在另一个子类中是纯虚函数。此外,如果我能做到这一点,调用抽象类上的函数是否会以最小的更改调用另一个子类中定义的函数?
例子:
class A
{
public:
virtual void Set(int X) = 0;
};
class B
{
public:
virtual void Set(int X);
};
class AB : public A, public B
{
//other methods not relevant to example go here
};
int main(int argc, char **argv)
{
int Y = 5;
A* ObjectA = new AB();
ObjectA->Set(Y);
return 0;
}
到目前为止,我编译这个基本示例的尝试都遇到了错误,错误信息如下所示:
'AB':无法实例化抽象类,因为以下成员:'void A::Set(int)'是抽象的
在自己的研究中,我没有找到明确的答案,但根据其他涉及相关主题的问题,我发现在类AB中使用"using B :: Set"可能有助于解决这个问题。但当我尝试将其添加到AB类定义中时,错误仍然存在。
有没有办法让这个工作?
virtual
关键字。 - Karl von Moorvirtual
修饰符,请修复。 - n. m.