C++ - 从方法基类调用派生类中的重写方法

标签 c++ polymorphism

f1 是类 c 的一个虚的非抽象方法,f2 是类 c 的一个方法
还让 c_derived 是基类 c 的派生类。
假设 f1c_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/

相关文章:

c++ - std::packaged_task 是如何工作的

C++ 类前向声明​​的缺点?

c++ - 使用 srand() 生成随机数

c++ - 在 C++ 中实现正态分布的制服比率

c# - 在关联来自不同基类的派生类时避免双向依赖

C++函数输出

Java父子函数调用机制关系

ruby-on-rails - Rails 3 中的多态关联

Java方法访问运行时多态性

dictionary - 是否可以在 Ada 中实例化带有标记记录类型的 Map 容器以便使用多态性?