我有一个命令行应用程序。它有一个抽象类,每个命令都是从该类派生的类。每个班级都有虚拟功能帮助。我有一个命令帮助。该命令应该执行每个命令的帮助方法。我怎样才能做到这一点。如果我没有清楚解释......
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
};
提前致谢:)
答案 0 :(得分:2)
迭代具有所有类的实例的集合,或者创建一个类的工厂函数。然后在每个上调用.Help()。
答案 1 :(得分:1)
您需要构建一个指向Base类型的集合,并执行一次购买。 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;
};