执行所有派生类的方法
execute methods of all derived classes
我有一个命令行应用程序。它有一个抽象类,每个命令都是从该类派生的类。每个类都有虚拟函数帮助。我有命令帮助。该命令应该执行每个命令的帮助方法。我怎样才能做到这一点。万一,我没有解释清楚。。。
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;
};
相关文章:
- 有没有一种"cleaner"的方法可以在指向基的指针向量中找到派生类的第一个实例?
- 用常见虚拟函数实现的任意组合来实现派生类的正确方法是什么
- 为什么此派生对象无法访问基类的后递减方法?
- 是否可以为 QPixmap 派生类嵌入缩放方法?
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- 使用基类中的派生方法运行线程,而无需使用模板
- 是否可以使用基类非虚拟方法中的派生类虚拟方法?
- 在派生类中使用基类的私有成员变量的最佳方法
- 如何在从抽象基派生的类中实现相同的方法?
- 调用从模板派生的类的静态方法,而不指定模板
- 如何在工厂方法中返回指向基于基础操作系统的派生类的有效指针
- 如何将成员函数作为参数传递并在派生对象上执行方法列表
- 从基类实例调用派生类方法而不进行强制转换
- 派生类调用父类的方法,该方法调用重写的虚拟方法调用错误的方法
- 从纯虚拟类 (A) 派生的指针无法访问来自纯类 (B) 的重载方法
- 通过基类接受方法转发派生 UniquePtr 的右值会移动引用而不是复制
- C ++基础私有方法在将自身转换为派生类后可以访问吗?
- C++ 使用派生类方法更改基类数据成员
- 如何使用派生类特定的方法:派生类中的派生成员
- 使用抽象类的指针访问派生类的方法;派生类似乎也是抽象的