[英]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
我知道對於獨立於平台的代碼部分,我可以執行從Direct3DModel
到IModel
的dynamic_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.