我無法使用boost::serialization
,因爲它具有庫依賴性,所以我試圖找出一種方法來自己做。這並不重要,這意味着從boost::serialization
複製。如何加載序列化的boost :: variant?
看完this answer to a similar question之後,我看了一下boost/serialization/variant.hpp,發現save()
這個功能對我來說是直接的和可以理解的。
然而load()
功能看起來比較複雜:有涉及load()
和variant_impl<types>::load()
和遞減which
參數遞歸。 顯然,代碼會遍歷每種類型的變體,以便將int which
轉換爲類型。 其餘的超越了我。
我知道增強有很多代碼,使它可移植,所以也許有一個不太便攜但更容易的方法來做到這一點?
我想把我的數據放入一個MFC'CArchive'對象中......我嘗試刪除NVP的東西,但是'CArchive'似乎不適合所有這些.. – foraidt
@foraidt: 'CArchive'僅適用於從'CObject'派生的類型,'boost :: variant <>'顯然不適用。 – ildjarn
@ildjarn CArchive :: operator <<()'被重載了相當多的類型(請參閱http://msdn.microsoft.com/en-us/library/331a7zh8%28v=vs.80%29.aspx) 。這允許序列化比'CObject'派生的類多得多。我的目標是序列化不是'variant'本身,而是它包含的數據。 – foraidt