2017-02-22 136 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>> 

然後你就可以把鹼或派生的對象到地圖中。