C++ 使列表中的子对象自转换为同一父对象的其他子对象的最佳方法
我有一个指向父对象的指针列表C++ 使列表中的子对象自转换为同一父对象的其他子对象的最佳方法,c++,oop,templates,design-patterns,vector,C++,Oop,Templates,Design Patterns,Vector,我有一个指向父对象的指针列表 vector<Parent*> list; 但是我想不出一个好的解决方案来解决这个问题。最后,将有数百个来自父类的其他子类也会这样做,但在其他条件下,所以我想要一个好的可扩展解决方案 谢谢通常,您不能用其他对象替换当前对象。您必须将此操作移到Execute之外 对于指针向量: Parent* Child1::Execute() { ... return condition ? new Child2 : this; } newobj =
vector<Parent*> list;
但是我想不出一个好的解决方案来解决这个问题。最后,将有数百个来自父类的其他子类也会这样做,但在其他条件下,所以我想要一个好的可扩展解决方案
谢谢通常,您不能用其他对象替换当前对象。您必须将此操作移到
Execute
之外
对于指针向量:
Parent* Child1::Execute() {
...
return condition ? new Child2 : this;
}
newobj = list[i]->Execute();
if (newobj != list[i]) {
delete list[i];
list[i] = newobj;
}
对于合适的智能指针向量,它更简洁:
list[i] = list[i]->Execute();
你可以发布一个完整的代码样本。。。即使它没有编译。很难准确地理解你在问什么。此外,您是否在谈论派生类而不是子类?谢谢您的回答。根据我的理解,子类是从另一个派生的类。这正是我要寻找的!谢谢
Parent* Child1::Execute() {
...
return condition ? new Child2 : this;
}
newobj = list[i]->Execute();
if (newobj != list[i]) {
delete list[i];
list[i] = newobj;
}
list[i] = list[i]->Execute();