函數應該接受一個類的名稱並返回該類型的對象。如何在C++中做到這一點?C++;如何將一個字符串(類的名稱)變成一個類型?
2
A
回答
7
這就是所謂的反射,不是C++語言的一部分。可以用通常稱爲工廠模式的東西來實現。它的工作方式是,對於您想要創建的每種類型,都可以在可以創建此類型的對象的函數與其名稱之間創建映射。
這種映射可能像std::map
那樣簡單,其中鍵是類的名稱,值是指向返回類的新實例的函數的函數指針。
0
你將不得不依賴引入反射對象的框架,比如Qt元對象系統,或者編寫你自己的對象。
但是,這不是真實的反射,只能用於手動幫助,無論是以需要調用工具的形式,還是以必須將可實例化類註冊到框架的形式。
2
根據您的問題的確切要求,您可能會詢問有關反思(在最常見的情況下),該語言不是本機支持的,但您可能會找到某些庫或某種形式的工廠模式,您可以在其中創建一個接收一組參數並返回相應類型對象的函數。第二種情況是一種更爲有限的情況,其中類型必須相關,並且必須實施工廠...
因此,您可以根據您的特定要求擴展問題嗎??
相關問題
- 1. 如何將一組字符串聲明爲一個類型?
- 2. 將不同數據類型的幾個變量組合成一個字符串
- 3. 包括字符串,字符串不會命名一個類型
- 4. c#中的類 - 創建一個包含類的實例名稱的字符串
- 5. '字符串'不會命名一個類型 - C++錯誤
- 6. 解析來自一個字符串類型名複用C#
- 7. 如何將一個AppleScript列表變成一個字符串
- 8. Java:如何獲得一個字符(或其類型分類)的Unicode名稱?
- 9. C# - 如何根據字符串返回一個類型
- 10. 如何寫一個泛型類型的擴展方法,其中一個類型變量必須是字符串?
- 11. 如何同時將多個名稱分配給一個C#類
- 12. 如何將模板化的類型名稱作爲字符串?
- 13. 如何從一個類獲取字符串到另一個類?
- 14. 類型從一個字符串數組
- 15. 如何獲得一個變量的值在一個字符串中的名稱?
- 16. 如何將一個字符串分成兩種不同的類型?
- 17. Java,將字符串從一個類傳遞到另一個類
- 18. 將字符串從一個類傳遞到另一個類
- 19. Haxe - 從字符串名稱中創建一個類的實例
- 20. 如何從類型名稱和程序集名稱中加載一個類型
- 21. 如何聲明一個變量類型知道它的類型由一個字符串
- 22. 使用結構圖如何解決一個類型,當我只有類型名稱的字符串
- 23. Java:如何用一個字符串的名稱創建一個新變量?
- 24. 需要傳遞一個泛型類的類型參數的基礎上,合格的類名稱的字符串
- 25. 取一個字符串,將它變成一些DB命令(C#)
- 26. 解析一個字符串到一個泛型枚舉類型
- 27. 如何將類型名稱轉換爲字符串?
- 28. 如何實例化從類對象在Unity的C#與一個變量(字符串)給一個名字
- 29. C將一個字符串分成4個變量
- 30. 如何將字符串轉換爲文本轉換成一個類名
我認爲總稱是內省。 –
@Preet:正如術語所言,來自拉丁文的intro_spection_只會成爲關於_observing_的反射部分。 –
+1哇 - 很好的反擊! –