我想知道C ++中是否有一种方法可以完成以下任务:
我有一个名为ResultBase
的基类,还有两个派生自其的类,分别为Variable
和Expression
。我有一些在vector<ResultBase>
上起作用的方法。我希望能够将Variable
和Expression
的向量传递到这些方法中。我可以通过创建一个vector<ResultBase>
并使用static_cast
填充来自我的Variable / Expression向量的成员来实现。但是,一旦向量通过方法运行,我希望能够将其作为Result / Expression的向量取回。我肯定知道我要回哪一个。 static_cast在这里不起作用,因为没有一种方法可以从ResultBase
重构变量/表达式,更重要的是,我没有变量/表达式的原始属性
这些方法修改了ResultBase
的某些属性,我需要将这些更改反映到原始向量中。 (即ResultBase
具有一个称为IsLive
的属性,其中一种方法将修改此属性。我希望将此IsLive
值反映在用于创建ResultBase
的派生类中
最简单的方法是什么?
最佳答案
vector<ResultBase *>
应该解决您的切片问题-vector<ResultBase>
永远不会包含从ResultBase
派生的类,而是复制“切片”的内容,例如通过复制Expression
部分的ResultBase
。
有关切片的详细说明,请参见What is object slicing?。
关于c++ - C++从派生类和基类来回转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5293416/