我有以下的情況:C++鑄造的的unique_ptr <Base>載體來的unique_ptr <Derived>其中衍生是模板
Base
是一個基類。 T
是可以假設任何派生類Base
的模板。
基底層提供我數據從Base
類,我需要轉換爲一個特定的類上述層(其中代碼被寫入該層)上,以在用戶級別工作。
下面是代碼:
template <class T> class Access {
std::vector<std::unique_ptr<T> getData();
}
template <class T>
std::vector<std::unique_ptr<T> getData()
{
/// Get data from below layer
std::vector<std::unique_ptr<Base>> retData;
retData = getDataFromBelowLayer();
/// Now I have to cast Base to T
std::vector<std::unique_ptr<T>> retCastData;
for (auto &item : retData)
{
std::unique_ptr<T> = static_cast<T>(item); <<---- NOT WORKING
retCastData.push_back(std::move(item)); <<---- NOT WORKING
}
return retCastData;
}
我怎樣纔能有效地施放的接收到的T
類型的unique_ptr´s
的vector
Base
類的unique_ptr´s
的vector
,如圖所示。
感謝您的幫助。
它看起來像通常的'polymorphic_downcast' –
請參閱[這裏](http://stackoverflow.com/questions/21174593/downcasting-unique-ptrbase-to-unique-ptrderived)。 – davidhigh
上面的代碼顯然不是不工作的代碼,因爲它在完全不同的行上有錯誤。請提供實際的最小示例來說明實際問題(以及您嘗試的解決方案),幷包括生成的實際錯誤消息。 – Yakk