如何在所有派生类中调用重写方法
How to call overriden methods in all derived classes
可能的重复项:
如何强制子相同的虚拟函数首先调用其父虚拟函数
我有一个类层次结构,其中每个派生类覆盖给定的虚拟函数,并通过调用其父类中的虚拟函数来开始其实现。目标是执行每个派生的实现,但我不喜欢我这样做的方式。
例如,我有这个类:
class base
{
public:
void do_stuff() { do_something(); }
virtual void do_something() { }
};
然后,我在几个级别上派生了这个类:
class derived_10:
public derived_9 // which inherit from derived_8 and so on until derived_0
// which inherit from base
{
public:
virtual void do_something()
{
// this will also call derived_8::do_something() and so on
// until base::do_something()
derived_9::do_something();
// then, some stuff
}
};
我正在寻找一种解决方案,以确保在调用 base::d o_stuff() 时按顺序调用所有 derived_x::d o_something(),而不必期望派生类自己执行此操作。您知道获得此行为的最佳方法吗?
我之前已经问过一个非常类似的问题:在C++中将覆盖类方法调用为链
我接受的答案指向你自己的解决方案。不过,我可以给你一个关于替代方案的想法。构造函数和析构函数在C++中已经具有此行为,您可能需要考虑重组代码,以便在构造或销毁属于层次结构中类的对象期间完成工作。不过,我不确定您是否能够使这值得付出努力。另一方面,你永远不知道你能从一些模板元编程+一些预处理器魔法中得到什么。
相关文章:
- 如何强制从重写方法调用重写的方法基方法?
- 如何重写全局方法名称以在调用原始方法之前将我的代码推到前面
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 从基类调用重写的方法
- Qt/C++ - 从派生类调用重写方法
- 继承和重写 - 从基类调用重写子方法
- 正在接口构造函数中调用重写的接口方法
- 如果基方法不是虚拟方法,则调用重写的方法
- 调用重写函数并使用基类中的重载变量
- 从基类调用重写的方法
- 从其基类列表中调用重写的函数
- C++继承-从构造函数调用重写
- C++中的多态性:调用重写的方法
- 如何在所有派生类中调用重写方法
- 在派生类中调用重写的方法
- 未调用C++重写的函数
- 使用c++ STL/Boost而不是system()调用重写这个简单的函数
- 如何从基类函数调用重写虚函数
- C++:在基类的构造函数中调用重写的方法
- 调用重写的虚函数而不是重载的