从我正在扩展的嵌套 class 覆盖方法
Override method from nested class that I'm extending
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;
};
我想在 class A 中覆盖 'method' 在 class D 中。这可能吗?
我总是收到消息:
错误:无法在 'A'
中定义成员函数 'method'
A好像没有继承D,也许classA : public C::D会如你所愿。 C 不继承 D,它在自身内部定义了 class,因此基础 classes 无法访问此派生实体。
编辑:尽管这是一种危险的继承模式
不,不可能,因为 D
只是一个内部 class,A
不是从它派生的。
这与 D
是在 C
之外定义的完全相同,您不能覆盖在某种程度上不属于基础 class 的函数(在这种情况下, 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 {} }
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;
};
我想在 class A 中覆盖 'method' 在 class D 中。这可能吗? 我总是收到消息:
错误:无法在 'A'
中定义成员函数 'method'A好像没有继承D,也许classA : public C::D会如你所愿。 C 不继承 D,它在自身内部定义了 class,因此基础 classes 无法访问此派生实体。
编辑:尽管这是一种危险的继承模式
不,不可能,因为 D
只是一个内部 class,A
不是从它派生的。
这与 D
是在 C
之外定义的完全相同,您不能覆盖在某种程度上不属于基础 class 的函数(在这种情况下, 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 {} }