假设我有一个基类A
和三个从A
派生的类,称为类x
,y
,z
。现在,类x
有一个函数成员f
,我想通过多态性从类A
指针访问。如何在存在多个派生类时使用基类指针访问派生类的函数成员?
我知道我还必须定义类A
中的相应虚函数,否则,我会得到类似"class A has no member named f"
的错误。但是,如果我在A
中定义了虚函数,我还需要在y
和z
中定义f
,否则会提出错误说明"y and z are of abstract class type"
。但有时,f
就像是一个特征函数,只与x
类有关,并且在类y
和z
中定义是没有意义的,尽管我可以在y
和z
中没有给出任何内容。
我的问题是在上面的情况,我该怎么办?
重新设计您的类层次结构,以便只调用'f'的代码只获取引用或指向'x'的指针,而不是'A'。 –
为什么不使f非纯虚拟,并给予基类的默认实现。并有f()只与x有关,而不是在y和z是暗示遗传不良 –
@LorenceHernandez我想知道为什么你认为* f()只与x有关,而不是y和z是不良继承的提示*。孩子班有其父母班没有的某些功能,其他的孩子班是不是也很自然和普遍?谢谢 – Nicholas