0

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

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
};

提前致谢:)

4

2 回答 2

2

遍历具有所有类的实例或工厂函数的集合以创建一个。然后只需在每个上调用 .Help() 即可。

于 2013-06-30T11:51:16.190 回答
1

您需要构建一个指向 Base 类型的集合并执行一次购买。顺便说一句,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;

};
于 2013-06-30T12:03:18.667 回答