Я пытаюсь решить проблему, когда у меня есть несколько классов, в которых мне нужно выполнить некоторую общую работу, а затем выполнить кучу задач, специфичных для проблемы, и когда это закончится, выполнить еще одну обработку, общую для всех этих классов.
У меня есть класс 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
}