2017-02-22 132 views
-1

上下文:我创建类型转换++

std::map<type, Base> 

其中地图被给定为基准参数的函数的内部。这个功能是非常从什么地方调用参考参数

std::map<type, Derived>&. 

什么是转换的最佳方式,从

std::map<type, Derived> 

std::map<type, Basis> 

其中Basis是基础Derived?我已经尝试通过直接转换转换失败。我不希望从派生衍生派生*和从基地派生*。

我需要运行该函数来创建具有Basis元素的地图,然后将其返回并与具有派生元素的地图一起使用。

+1

请添加一些额外的细节,你有什么容器和你想要去哪个容器。还有你已经尝试过。 – NathanOliver

+0

如果你谈论“基础是......”,那么以前的东西应该有这个词。实际上,您在没有任何进一步细节的情况下提出“我有一个问题不能解决的问题”这样的问题。 – Aziuth

+0

你是否想要做一些像'basis_map [something] .some_function();'并且派生类的函数被调用? – NathanOliver

回答

4

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

如果你想要的东西没有接近原始指针的解决方案,使用此:

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

然后你就可以把碱或派生的对象到地图中。