可能重复:
如何强制子相同的虚函数首先调用其父虚函数
我有一个类层次结构,其中每个派生类重写给定的虚函数,并通过调用其父类中的一个来启动它的实现.目标是让每个派生的实现都被执行,但我不喜欢我这样做的方式.
例如,我有这个类:
class base
{
public:
void do_stuff() { do_something(); }
virtual void do_something() { }
};
Run Code Online (Sandbox Code Playgroud)
然后我在几个级别上派生这个类:
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
}
};
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种解决方案,以确保在调用base :: do_stuff()时将按顺序调用所有derived_x :: do_something(),而不必期望派生类本身执行此操作.您是否了解获得此行为的最佳方法?
我之前已经问过一个非常类似的问题:Calling overriden class method as a chain in C++
我接受的答案指出了您自己的解决方案。不过我可以给你一个替代方案的想法。构造函数和析构函数在 C++ 中已经具有这种行为,您可能需要考虑重构代码,以便在属于层次结构中的类的对象的构造或销毁期间完成工作。但我不确定你是否能够让这一切值得付出努力。另一方面,你永远不知道可以从一些模板元编程+一些预处理器魔法中得到什么。
| 归档时间: |
|
| 查看次数: |
1157 次 |
| 最近记录: |