如何從包含類別名稱的字串實例化物件?
在給定的程式碼中,BaseFactory 類別建立不同衍生類別的物件是基於代表其類別名稱的字串。但是,工廠需要為每個可能的衍生類別手動新增 if 語句。人們可能想知道是否有一種替代這種冗長方法的方法,類似於 C# 的反射功能。
不幸的是沒有自動化機制
不幸的是,C 沒有機制用於自動建立運行時指定類型的物件。但是,您可以自己進行映射:
類型映射
您可以建立一個映射,為每個類別名稱儲存一個建立物件的函數該類別的:
然後你也可以實例化物件help:
型別註冊
另一個解法是允許型別自行註冊:
您也可以定義巨集對於型別註冊:
對於不共用公用基底的型別,您可以使用變體boost::variant作為函數的回傳類型:
以上是如何從包含類別名稱的字串建立 C 物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!