【发布时间】:2016-02-14 07:13:58
【问题描述】:
我有一个指向父对象的指针列表
vector<Parent*> list;
然后我有 2 个父类的子类:Child1 和 Child2 添加到列表中。
代码遍历列表的所有实体并调用Execute();
for(int i = 0; i < list.size(); i++)
list[i]->Execute();
Execute() 是 Parent 的虚函数,在每个子类中的实现方式不同。我想在 Child1::Execute() 的函数中创建一个条件,将其替换为列表中相同位置的 Child2 实体。 p>
我当然不能这样做:
void Child1::Execute() {
...
if(condition)
this = new Child2();
}
但我想不出一个好的解决方案来做到这一点。最终会有几百个来自 Parent 的 Other Child 类会在其他条件下做同样的事情,所以我想要一个很好的可扩展解决方案。
谢谢
【问题讨论】:
-
您能否发布代码的完整示例...即使它无法编译。很难准确理解你在问什么。此外,您可能在谈论派生类而不是子类?
-
感谢您的回复。根据我的理解和this wikibook,一个子类是一个从另一个派生的类。
标签: c++ oop templates design-patterns vector