如何重写继承的嵌套类中存在的虚拟方法

How to override virtual method present in inherited Nested Classes

本文关键字:嵌套 存在 方法 虚拟 继承 何重写 重写      更新时间:2023-10-16

如何覆盖继承嵌套类中的虚拟方法?
代码片段:

class A
{
public:
virtual void foo();
};
class B
{
public:
class C: public A
{};
};
class D: public B
{
//How to override foo()`enter code here` method of class A here in class D?
}

在大多数情况下,嵌套类的行为就像它们在嵌套的类之外定义的一样。

唯一的区别与名称查找、可访问性和模板专用化有关。

特别是,嵌套类与其封闭类之间没有继承关系。

在您的示例中

class B
{
public:
class C: public A
{};
};

是(除了如何找到C的名字(等于:

class B
{
};
class C: public A
{
};

CB之间没有继承关系,因此DA之间也没有继承关系。DA不属于同一类层次结构。

因此,让D覆盖A的成员函数是没有意义的。