我正在尝试解决一个问题,其中我有一些类,我需要做一些常见的工作,然后是一堆特定于问题的工作,当这个完成时,对所有这些类做一些共同的处理.
我有一个Base和Derived类,它们都有一个名为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
}
Run Code Online (Sandbox Code Playgroud)
使用基础的纯虚函数..
class Base
{
public:
void Execute();
private:
virtual void _exec() = 0;
};
Base::Execute() {
// do some common pre work
// do derived specific work
_exec();
// do some more common work...
}
class Derived : public Base
{
private:
void _exec() {
// do stuff
}
};
int main()
{
Base * b = new Derived();
b.Execute();
}
Run Code Online (Sandbox Code Playgroud)
编辑:在阅读了一些问题之后稍微改变了流程.. :)上面的机制应该完全匹配你现在需要的 -
即