gpt4 book ai didi

c++ - 在继续派生函数之前执行基函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:41 25 4
gpt4 key购买 nike

我正在尝试解决一个问题,其中我有一些类,我需要在其中做一些常见的工作,然后是一堆特定于问题的工作,当这完成时,对所有这些类进行一些共同的处理。

我有一个基类和派生类,它们都有一个名为 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

}

最佳答案

使用基类中的纯虚函数..

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();

}

编辑:在阅读更多问题后稍微改变了流程.. :) 上面的机制应该完全符合你现在的要求 -

  1. 基础通用内容
  2. 派生特定的东西
  3. 再次基本通用的东西

关于c++ - 在继续派生函数之前执行基函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5660851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com