类型转换++
问题描述:
上下文:我创建类型转换++
std::map<type, Base>
其中地图被给定为基准参数的函数的内部。这个功能是非常从什么地方调用参考参数
std::map<type, Derived>&.
什么是转换的最佳方式,从
std::map<type, Derived>
到
std::map<type, Basis>
其中Basis
是基础Derived
?我已经尝试通过直接转换转换失败。我不希望从派生衍生派生*和从基地派生*。
我需要运行该函数来创建具有Basis元素的地图,然后将其返回并与具有派生元素的地图一起使用。
答
您根本无法将Derived的容器转换为Base的容器。首先,如果Derived大于Base,额外的位会发生什么?
如果你想要的东西没有接近原始指针的解决方案,使用此:
std::map<type, std::unique_ptr<Base>>
然后你就可以把碱或派生的对象到地图中。
请添加一些额外的细节,你有什么容器和你想要去哪个容器。还有你已经尝试过。 – NathanOliver
如果你谈论“基础是......”,那么以前的东西应该有这个词。实际上,您在没有任何进一步细节的情况下提出“我有一个问题不能解决的问题”这样的问题。 – Aziuth
你是否想要做一些像'basis_map [something] .some_function();'并且派生类的函数被调用? – NathanOliver