有沒有一種方法來序列化C++中的類?我不是指一個類的實例,而是指類本身。反序列化時,我不知道要實例化哪個類來調用反序列化。我希望能夠以某種方式確定正在表示什麼類,實例化它的一個空實例,然後調用反序列化它。在C++中序列化一個類
編輯澄清:
我創建一個鍵值結構,其中每個按鍵都有一個強類型值。 (有些鍵必須存儲一個字符串,其他鍵必須存儲整數,還有一些鍵可以存儲任意值)。我已經設計了一個系統,通過模板來實現這一點。
Key類有兩個模板參數:
- UniqueClass - 應該有每概念
- 值類型(通常在定義的概念的預處理器的功能所定義的)一個唯一的類 - 這是類該值必須符合這個概念
Value類是一個模板類,只有ValueType具有抽象超類,這樣我就可以包裝任何類(類似於boost :: any)。
然後在我的鍵值結構我有存儲和檢索的模板與ConceptType和值類型的功能:
template<UniqueClass, ValueType>
void store(Concept<UniqueClass, ValueType> concept, ValueType value);
因爲我使用的是相同的模板來描述概念的價值型和如果它們不匹配,則編譯器會報告傳入的值。
我現在想要能夠序列化鍵值存儲。因此,我需要以某種方式序列化模板化的Concept類,然後在反序列化過程中實例化正確的任意類。
我有它,以便我可以調用序列化,並要求所有適當的對象序列化自己,我只是不知道在反序列化期間要實例化什麼類要求反序列化自己。
請解釋「serialize a class」的含義。序列化什麼,定義(方法/領域)?靜態成員? – cdhowie
顯示您正在嘗試工作的一些非工作代碼。 –
你的問題並不是很清楚,但你似乎在尋求兩個不同的東西。 1)如何確定要反序列化的類的類型(這需要一些序列化的元數據並可以使用某種類型的工廠模式)以及2)如何實際序列化內容(可以通過多種方式完成)。這裏有一些例子可以讓你開始:http://www.boost.org/doc/libs/1_51_0/libs/serialization/doc/index.html – Chad