簡體   English   中英

從基礎 object 轉換為 C++ 中的派生 object

[英]Convert from a Base object to a Derived object in C++

我正在嘗試將代碼部分抽象為獨立於平台的。

我有一段代碼正在創建 Base class IModel的對象。

std::shared_ptr<IModel> joint_model_3d = std::make_shared<IModel>();

我有另一段代碼負責渲染。 為了渲染 object 我需要將其轉換為派生的 class Direct3DModel

class Direct3DModel : public IModel

我知道對於獨立於平台的代碼部分,我可以執行從Direct3DModelIModeldynamic_cast ,然后dynamic_cast回到Direct3DModel進行渲染。

我的問題是,我可以在平台無關代碼中創建 Base class IModel的 object ,它不應該知道Direct3DModel ,並在我需要它進行渲染時將其轉換為Direct3DModel

我需要某種與平台無關的 object 創建者 class 嗎?

我的問題是,我可以在平台無關代碼中創建 Base class IModel的 object ,它不應該知道Direct3DModel ,並在我需要它進行渲染時將其轉換為Direct3DModel

不,那行不通。

您必須在了解 class 的代碼庫中創建Direct3DModel object。 平台無關代碼需要調用平台相關代碼來構造這樣一個object。 您可以使用工廠模式來實現該功能。

與平台無關的代碼必須與基本 class 指針和引用(在您的情況下為IModel )一起使用。 只要指針/引用指向Direct3DModel object,您就可以在特定於平台的代碼中使用dynamic_cast來獲取指向Direct3DModel的指針/引用,以繼續執行特定於平台的邏輯。

我需要某種與平台無關的 object 創建者 class 嗎?

是的。 工廠模式促進了這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM