覆盖我正在扩展的嵌套类的方法

Override method from nested class that I'm extending

本文关键字:嵌套 方法 扩展 覆盖      更新时间:2023-10-16
class A : public B {}
class B : public C {}
class C
{
 public :
     class D : public I<T1>
     {
         virtual void method() const;
     }; 
     class E : public I<T2>
     {
         virtual void method() const;
     }; 
     class F : public I<T2>
     {
         virtual void method() const;
     }; 
 public :
     D d;
};

我希望在A类中覆盖D中的"方法"。是否有可能?我总是收到消息:

错误:无法在'a''

中定义成员函数'方法'

不可能,因为 D只是一个内部类, A不会从中派生。

这与DC之外定义的完全相同,您不能覆盖不在基类方面的某种方式的函数(在这种情况下,A并未以任何方式从D派生)。<<<<<<<<<<<<<<<<

//How would A override a method in D? It can't, A has nothing to do with D
class A : public B {};
class B : public C {};
class C {}
class D { virtual void method() const {} }

a似乎并未从d上继承,也许是A类:公共C :: D将实现您想要的东西。C不继承D,它在本身内定义了类,因此基类无法访问此派生实体。

编辑:fwiw虽然这是继承的危险模式