执行所有派生类的方法

execute methods of all derived classes

本文关键字:方法 派生 执行      更新时间:2023-10-16

我有一个命令行应用程序。它有一个抽象类,每个命令都是从该类派生的类。每个类都有虚拟函数帮助。我有命令帮助。该命令应该执行每个命令的帮助方法。我怎样才能做到这一点。万一,我没有解释清楚。。。

class Base {
public:
    virtual void help() = 0;
};
class Derived : public Base {   
public:
    virtual void help();
};

class Derived1 : public Base {  
public:
    virtual void help();
};

class Derived2 : public Base {  
public:
    virtual void help();
};
class DerivedToCallEveryHelp : public Base {    
//How can I execute help functions of every dervied class
};

提前感谢:)

在集合上迭代,该集合要么有所有类的实例,要么有一个工厂函数来创建一个。然后只需对每个调用.Help()。

您需要构建一个点到基类型的集合,并一个一个地执行它们。BTW,DerivedToCallEveryHelp应该是一个独立的类,它不需要从Base继承

#include <memory>
#include <vector>
class DerivedToCallEveryHelp
public:  
  DerivedToCallEveryHelp()
  {
      helps.push_back(std::unique_ptr<Base>(new Derived()));
      helps.push_back(std::unique_ptr<Base>(new Derived1()));
      helps.push_back(std::unique_ptr<Base>(new Derived2()));
  }
  void Execute()
  {
     for(auto & item: helps)
     {
          item->help();
     }
  }
private:
  std::vector<std::unqiue_ptr<Base> helps;
};