在继续派生函数之前执行基函数
|
我正在尝试解决一个问题,在这个问题中,我需要一些类来完成一些常见的工作,然后执行一堆针对特定问题的工作,完成这些后,还要对所有这些类进行更多的处理。
我有一个基类和派生类,它们都有一个称为Execute的函数。当我调用此函数的派生版本时,我希望能够对Base中所有派生类进行一些通用的处理,然后继续在Derived :: Execute中执行并返回到Base :: Execute以执行以下操作:完成一些常见的工作。
在C ++中这有可能吗?如何最好地做到这一点?
这是个主意,但是这样可能不太可行:
class Base
{
public:
virtual void Execute();
};
Base::Execute() {
// do some pre work
Derived::Execute(); //Possible????
// do some more common work...
}
class Derived : public Base
{
public:
void Execute();
};
void Derived::Execute()
{
Base::Execute();
//Do some derived specific work...
}
int main()
{
Base * b = new Derived();
b.Execute(); //Call derived, to call into base and back into derived then back into base
}
没有找到相关结果
已邀请:
4 个回复
旦彤
编辑:阅读更多问题后稍稍改变了流程..::)上面的机制应该完全符合您现在所需要的 即 基础共同的东西 派生特定的东西 再次基础共同的东西
镀建啼
死狸蔽垂藐
让派生类插入基类算法通常称为“模板方法”模式(与ѭ4无关)。在基类接口中没有公共虚函数通常称为“非虚拟接口”模式。 我相信Google可以在这两个方面找到很多东西。
亨尖玛次酥
,然后使用RAII轻松实现。