我想知道C ++中是否有一种方法可以完成以下任务:

我有一个名为ResultBase的基类,还有两个派生自其的类,分别为VariableExpression。我有一些在vector<ResultBase>上起作用的方法。我希望能够将VariableExpression的向量传递到这些方法中。我可以通过创建一个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/

10-11 16:43