微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C如何从基类调用派生类中的方法

我想要做的是让Execute()运行并完成它调用Base :: Done()然后调用Derived :: Done().我这样做是因为基类Execute会做一些事情,当它完成时调用Derived :: Done().我希望我能正确解释.有点像任务完成时调用的监听器.我有点坚持Base类将如何调用Derived类.
class Base
{
  virtual void Done(int code){};
  void Execute();
}

void Base::Execute()
{
}


class Derived : Base
{
  void Done(int code);
  void Run();
}

Derived::Done(int code)
{
}

void Derived::Run()
{
    Execute();
}

解决方法

您可以使用模板方法
class Base
{
 public:
  void Execute()
  {
    BaseDone(42);
    Dodone(42);
  }
 private:
  void BaseDone(int code){};
  virtual void Dodone(int) = 0;
};

class Derived : Base
{
 public:
  void Run() { Execute(); }
 private:
  void Dodone(int code) { .... }
};

这里,Base控制如何在Execute()中使用自己的派生方法和派生方法,派生类型只需要通过私有虚方法Dodone()实现该实现的一个组件.

原文地址:https://www.jb51.cc/c/110844.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐