2011-01-11 4 views
3

boost xmlarchivesからバージョン追跡を削除する方法が見つかりません。boost xml serializationでバージョン管理を削除する

<Settings class_id="0" tracking_level="0" version="1"> 
<px class_id="1" tracking_level="1" version="0" object_id="_0"> 
    <TestInt>3</TestInt> 
    <Resolution class_id="2" tracking_level="0" version="0"> 
    <x>800</x> 
    <y>600</y> 
    </Resolution> 
    <SomeStuff>0</SomeStuff> 
</px> 
</Settings> 

のために、この場合、私はちょうどそれを必要としたくないので、私は、CLASS_ID =「0」tracking_level =「0」バージョン=「1」ものの乗り心地を取得したいです私はブースト::シリアル化::どこtrack_neverが、

答えて

3
それを使用するを発見したシンプルなきれいな設定ファイルなどの

コード

void serialize(Archive & ar, const unsigned int version) 
{ 
    ar & make_nvp("TestInt", TestInt); 

    ar & make_nvp("Resolution", resolution); 
    ar & make_nvp("SomeStuff", SomeStuff); 
} 

は「no_header」オプションを使用してiarchive作成しよう:

boost::archive::xml_iarchive ia(is, boost::archive::no_header); 
+0

ありがとう、少なくとも少し助けてください。 no_trackingはno_headerと同じ列挙型になっていますが、読み込んだものから、ブーストによって無効になり、 "失敗した実験"として残ります。残りの部分と一緒に生活しなければなりません^^ – cppanda

+0

あなたはちょうどコピー/あなたのプロジェクトにboostからxml_archiveを貼り付け、それを修正する –

7

手遅れオリジナルポスターのため、私は

BOOST_CLASS_IMPLEMENTATION(My_class, object_serializable) 

たトリックをしてきたものを共有したいと思いながら。

3

、あなたはそれぞれの

BOOST_CLASS_IMPLEMENTATION(<type>, boost::serialization::object_serializable) 
BOOST_CLASS_TRACKING(<type>, boost::serialization::track_never) 

を使用する必要があります表示されているからtracking_levelとバージョンを使用すると、属性CLASS_IDを無効にするには

boost::archive::xml_iarchive ia(is, boost::archive::no_header); 

を使用できるXMLアーカイブファイルのヘッダを削除するにはタイプ。これらのマクロは、この順序で呼び出す必要があります。 N.B.

BOOST_CLASS_VERSION 

上記のマクロを使用することはできません。

関連する問題