2014-01-08 63 views
1

有沒有什麼方法可以將指針序列化爲原語,而無需將其包裝到類中?boost指向基本原型的指針序列化,不包裝

我注意到下面這個問題,它需要跟蹤該程序中的所有類型的原語,我猜可能會減慢序列化的程度。但是,如果我可以接受呢?有沒有辦法爲所有原始類型啓用跟蹤?

How do I serialize a class containing pointers to primitives?

我發現這個話題(2006年),這也暗示了這一問題。看起來序列化一個指向原語的指針應該是可能的,但是缺少跟蹤使得它可能不是你想要的。這似乎暗示了可能性,但並沒有解釋它是否實施。

http://boost.2283326.n4.nabble.com/serialization-serialization-of-pointers-to-primitive-types-td2561086.html

+0

只需將它包裝在一個類......這是應該做的事理智。那是什麼反對? – sehe

+0

這是一種複雜的情況。但它與創建使用C++代碼片段的DSL有關。我希望DSL的用戶能夠使用他們習慣的C++類型。 – user338519

+0

我沒有看到DSL是如何相關的(除非我把圖片倒過來,而你是(ab)使用序列化來解析DSL)。我假設像基於Proto的eDSL(表達模板)?在這種情況下,沒有什麼能阻止你轉換ast。或者,按照我的意願,用Boost Spirit Karma編寫序列化文件,並側面提示整個「問題」 – sehe

回答

0

你可以寫一個過載功能operator&,就像這樣:

template<class Archive> 
void operator&(Archive & ar, const char* &p) 
{ 

} 
相關問題