上下文:我创建了
std::map<type, Base>
在一个函数内部,其中map作为参考参数给出。理想情况下,使用参考参数
从某处调用此函数std::map<type, Derived>&.
从
转换的最佳方式是什么?std::map<type, Derived>
到
std::map<type, Basis>
其中Basis
是Derived
的基础类?我已经尝试通过直接转换尝试转换失败了。我不希望从Derived转换为Derived *,从Base转换为Base *。
我需要运行该函数来创建带有Basis元素的地图,然后将其取回并使用Derived元素处理地图。
答案 0 :(得分:4)
您无法将Derived容器转换为Base容器。首先,如果Derived大于Base,那么额外的位会发生什么?
如果你想要一些没有原始指针的解决方案,请使用:
std::map<type, std::unique_ptr<Base>>
然后您可以将Base或Derived对象放入地图中。