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;
答案 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 {} }