2011-08-23 209 views

回答

7

這就是所謂的反射,不是C++語言的一部分。可以用通常稱爲工廠模式的東西來實現。它的工作方式是,對於您想要創建的每種類型,都可以在可以創建此類型的對象的函數與其名稱之間創建映射。

這種映射可能像std::map那樣簡單,其中鍵是類的名稱,值是指向返回類的新實例的函數的函數指針。

+0

我認爲總稱是內省。 –

+4

@Preet:正如術語所言,來自拉丁文的intro_spection_只會成爲關於_observing_的反射部分。 –

+0

+1哇 - 很好的反擊! –

0

你將不得不依賴引入反射對象的框架,比如Qt元對象系統,或者編寫你自己的對象。

但是,這不是真實的反射,只能用於手動幫助,無論是以需要調用工具的形式,還是以必須將可實例化類註冊到框架的形式。

2

根據您的問題的確切要求,您可能會詢問有關反思(在最常見的情況下),該語言不是本機支持的,但您可能會找到某些庫或某種形式的工廠模式,您可以在其中創建一個接收一組參數並返回相應類型對象的函數。第二種情況是一種更爲有限的情況,其中類型必須相關,並且必須實施工廠...

因此,您可以根據您的特定要求擴展問題嗎?

相關問題