在c ++中键入STL结构的转换

时间:2017-02-22 12:54:14

标签: c++ stl

上下文:我创建了

std::map<type, Base>

在一个函数内部,其中map作为参考参数给出。理想情况下,使用参考参数

从某处调用此函数
std::map<type, Derived>&.

转换的最佳方式是什么?
std::map<type, Derived> 

std::map<type, Basis> 

其中BasisDerived的基础类?我已经尝试通过直接转换尝试转换失败了。我不希望从Derived转换为Derived *,从Base转换为Base *。

我需要运行该函数来创建带有Basis元素的地图,然后将其取回并使用Derived元素处理地图。

1 个答案:

答案 0 :(得分:4)

您无法将Derived容器转换为Base容器。首先,如果Derived大于Base,那么额外的位会发生什么?

如果你想要一些没有原始指针的解决方案,请使用:

std::map<type, std::unique_ptr<Base>> 

然后您可以将Base或Derived对象放入地图中。