设 f1
是类 c
的一个虚的非抽象方法,f2
是类 c 的一个方法
。
还让 c_derived
是基类 c
的派生类。
假设 f1
在 c_derived
中被覆盖。如何从 c
中的方法 f2
调用 c_derived
的方法 f1
(覆盖)?
可能的解决方法。将函数指针参数添加到 c::f2
参数列表,创建包装器 c_derived::w
c::f2
的 >,并将 c_derived::f1
的函数指针从包装器 c_derived 传递给
。c::f2
::w
有没有一种合理的方法来做到这一点?
最佳答案
这很棘手,但可以通过一些黑客攻击来完成:
void c::f2()
{
f1(); // if f1 is overriden in a class deriving from c,
// the derived class version is called
}
要调用基类版本 (c::f1
),您需要完全限定调用 - c::fi()
。
关于C++ - 从方法基类调用派生类中的重写方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33792252/