覆盖我扩展

时间:2016-06-17 17:01:43

标签: c++ inheritance inner-classes

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班中覆盖&#39;方法&#39;在D级。有可能吗? 我总是收到消息:

错误:无法定义成员函数&#39;方法&#39;在&#39; A&#39;

2 个答案:

答案 0 :(得分:2)

A似乎不是从D继承,也许是A类:公共C :: D将实现你想要的。 C不继承D,它定义了自身内的类,因此基类无法访问此派生实体。

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

答案 1 :(得分:2)

不,不可能,因为D只是一个内部类,A并非来自它。

与在D之外定义C的情况完全相同,您不能覆盖不属于基类的某些函数(在本例中为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 {} }