<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[BOOST serialization mit &#x27;load_construct_data&#x27;]]></title><description><![CDATA[<p>Hallo <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Ich habe eine Klasse mit konstanten, nur durch den Konstruktor gesetzten, Variablen.<br />
Bei der De-/Serialisierung mit Boost wird normalerweise ein leeres Objekt erzeugt und dann die privaten Member der Klasse einzeln zugewiesen. Bei Objekten ohne Standardkonstruktor soll man 'load_construct_data' benutzen.<br />
Das habe ich versucht, klappt aber nicht wie gewünscht, ich weiß nicht, wohin ich die Funktion schreiben soll, damit sie überschrieben und dann auch aufgerufen wird.</p>
<p>Ein vollständiges Beispiel ist unter <a href="http://nopaste.info/a4294df9fd.html" rel="nofollow">http://nopaste.info/a4294df9fd.html</a> zu finden (darunter die entsprechende Fehlermeldung) bzw hier:</p>
<pre><code>#pragma warning(push, 0) 
    #include &lt;boost/serialization/base_object.hpp&gt;
    #include &lt;boost/serialization/list.hpp&gt;
    #include &lt;boost/serialization/map.hpp&gt;
    #include &lt;boost/serialization/vector.hpp&gt;
    #include &lt;boost/serialization/shared_ptr.hpp&gt;
    #include &lt;boost/shared_ptr.hpp&gt;
    #include &lt;boost/archive/text_iarchive.hpp&gt;
    #include &lt;boost/archive/text_oarchive.hpp&gt;
    #include &lt;boost/archive/xml_oarchive.hpp&gt;
    #include &lt;boost/archive/xml_iarchive.hpp&gt;
    #include &lt;boost/serialization/nvp.hpp&gt;
    #pragma warning(pop)

    #include &lt;fstream&gt;
    #include &lt;iostream&gt;
    #include &lt;string&gt;

    class Object
    {
    public:
        Object(const unsigned int id,
            const std::string&amp; name);
        ~Object() {}    

    private:
        friend class boost::serialization::access;
        template&lt;class Archive&gt; void serialize(Archive &amp;ar, const unsigned int version)
        {
            ar &amp; boost::serialization::make_nvp(&quot;id&quot;, id);
            ar &amp; boost::serialization::make_nvp(&quot;name&quot;, name);

            if(version &gt; 0) {
            }
        }

        const unsigned int id;
        const std::string name;

        Object&amp; operator=(const Object&amp; other);
    };

    namespace boost { namespace serialization {
        template&lt;class Archive&gt; void load_construct_data(Archive&amp; ar, Object* t, const unsigned int version)
        {
            unsigned int loaded_id;
            std::string loaded_name;

            ar &amp; boost::serialization::make_nvp(&quot;id&quot;, loaded_id);
            ar &amp; boost::serialization::make_nvp(&quot;name&quot;, loaded_name);

            ::new(t)Object(loaded_id, loaded_name);
                if(version &gt; 0) {
                }
        }
    }}

    Object::Object(
        const unsigned int id,
        const std::string&amp; name):
        id(id),
        name(name)
    { }

    void saveToXML(const Object&amp; tis , const std::string&amp; filename, const std::string&amp; name) {
        std::ofstream ofs(filename.c_str());
        boost::archive::xml_oarchive oa(ofs);
        oa &lt;&lt; boost::serialization::make_nvp(name.c_str(), tis);
        ofs.close();
    }

    void loadFromXML(Object* tis, const std::string&amp; filename, const std::string&amp; name) {
        std::ifstream ifs(filename.c_str());
        boost::archive::xml_iarchive ia(ifs);
        ia &gt;&gt; boost::serialization::make_nvp(name.c_str(), tis);
        ifs.close();
    }

    int main()
    {
        // remove previously written files
        std::remove(&quot;test.txt&quot;);
        Object object(1, &quot;testobject&quot;);
        // save the object
        saveToXML(object, &quot;test.txt&quot;, &quot;testname&quot;);

        // reload the map
        Object* new_object2 = NULL;
        loadFromXML(new_object2, &quot;test.txt&quot;, &quot;testname&quot;);

        std::remove(&quot;test.txt&quot;);
    }

    /*

    1&gt;------ Erstellen gestartet: Projekt: test, Konfiguration: Release Win32 ------
    1&gt;  test.cpp
    1&gt;C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/check.hpp(162): error C2338: typex::value
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(577): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::detail::check_const_loading&lt;T&gt;(void)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              T=const unsigned int
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/common_iarchive.hpp(66): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::load&lt;Archive,T&gt;(Archive &amp;,T &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const unsigned int
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/basic_xml_iarchive.hpp(86): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::detail::common_iarchive&lt;Archive&gt;::load_override&lt;T&gt;(T &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const unsigned int
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/xml_iarchive.hpp(93): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::basic_xml_iarchive&lt;Archive&gt;::load_override&lt;const unsigned int&gt;(const boost::serialization::nvp&lt;T&gt; &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const unsigned int
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/interface_iarchive.hpp(60): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::xml_iarchive_impl&lt;Archive&gt;::load_override&lt;T&gt;(T &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const boost::serialization::nvp&lt;const unsigned int&gt;
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/interface_iarchive.hpp(67): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;Archive &amp;boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator &gt;&gt;&lt;T&gt;(T &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const boost::serialization::nvp&lt;const unsigned int&gt;
    1&gt;          ]
    1&gt;          test.cpp(30): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;Archive &amp;boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator &amp;&lt;const boost::serialization::nvp&lt;T&gt;&gt;(const boost::serialization::nvp&lt;T&gt; &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const unsigned int
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/serialization/access.hpp(118): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void Object::serialize&lt;Archive&gt;(Archive &amp;,const unsigned int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/serialization/serialization.hpp(69): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::serialization::access::serialize&lt;Archive,T&gt;(Archive &amp;,T &amp;,const unsigned int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/serialization/serialization.hpp(128): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::serialization::serialize&lt;Archive,T&gt;(Archive &amp;,T &amp;,const unsigned int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(192): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::serialization::serialize_adl&lt;Archive,T&gt;(Archive &amp;,T &amp;,const unsigned int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(170): Bei der Kompilierung der  Klassen-template der void boost::archive::detail::iserializer&lt;Archive,T&gt;::load_object_data(boost::archive::detail::basic_iarchive &amp;,void *,const unsigned int) const-Memberfunktion
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(208): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;boost::archive::detail::iserializer&lt;Archive,T&gt;&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(205): Bei der Kompilierung der  Klassen-template der const boost::archive::detail::basic_iserializer &amp;boost::archive::detail::pointer_iserializer&lt;Archive,T&gt;::get_basic_serializer(void) const-Memberfunktion
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/interface_iarchive.hpp(54): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;boost::archive::detail::pointer_iserializer&lt;Archive,T&gt;&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(459): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;const boost::archive::detail::basic_pointer_iserializer *boost::archive::detail::interface_iarchive&lt;Archive&gt;::register_type&lt;T&gt;(T *)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(475): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;const boost::archive::detail::basic_pointer_iserializer *boost::archive::detail::load_pointer_type&lt;Archive&gt;::non_abstract::register_type&lt;T&gt;(Archive &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(515): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;const boost::archive::detail::basic_pointer_iserializer *boost::archive::detail::load_pointer_type&lt;Archive&gt;::register_type&lt;Object&gt;(Archive &amp;,const T &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(592): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::detail::load_pointer_type&lt;Archive&gt;::invoke&lt;T&gt;(Archive &amp;,Tptr &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object *,
    1&gt;              Tptr=Object *
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/common_iarchive.hpp(66): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::load&lt;Archive,T&gt;(Archive &amp;,T &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object *
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/basic_xml_iarchive.hpp(86): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::detail::common_iarchive&lt;Archive&gt;::load_override&lt;T&gt;(T &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object *
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/xml_iarchive.hpp(93): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::basic_xml_iarchive&lt;Archive&gt;::load_override&lt;Object*&gt;(const boost::serialization::nvp&lt;T&gt; &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object *
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/interface_iarchive.hpp(60): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::xml_iarchive_impl&lt;Archive&gt;::load_override&lt;T&gt;(T &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const boost::serialization::nvp&lt;Object *&gt;
    1&gt;          ]
    1&gt;          test.cpp(86): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;Archive &amp;boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator &gt;&gt;&lt;const boost::serialization::nvp&lt;T&gt;&gt;(const boost::serialization::nvp&lt;T&gt; &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object *
    1&gt;          ]
    1&gt;C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/check.hpp(162): error C2338: typex::value
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(577): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::detail::check_const_loading&lt;T&gt;(void)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              T=const std::string
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/common_iarchive.hpp(66): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::load&lt;Archive,T&gt;(Archive &amp;,T &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const std::string
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/basic_xml_iarchive.hpp(86): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::detail::common_iarchive&lt;Archive&gt;::load_override&lt;T&gt;(T &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const std::string
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/xml_iarchive.hpp(93): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::basic_xml_iarchive&lt;Archive&gt;::load_override&lt;const std::string&gt;(const boost::serialization::nvp&lt;T&gt; &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const std::string
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/interface_iarchive.hpp(60): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::xml_iarchive_impl&lt;Archive&gt;::load_override&lt;T&gt;(T &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const boost::serialization::nvp&lt;const std::string&gt;
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/interface_iarchive.hpp(67): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;Archive &amp;boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator &gt;&gt;&lt;T&gt;(T &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const boost::serialization::nvp&lt;const std::string&gt;
    1&gt;          ]
    1&gt;          test.cpp(31): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;Archive &amp;boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator &amp;&lt;const boost::serialization::nvp&lt;T&gt;&gt;(const boost::serialization::nvp&lt;T&gt; &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const std::string
    1&gt;          ]
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    */
</code></pre>
<p>Jemand eine Idee?</p>
<p>Vielen Dank im voraus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/279641/boost-serialization-mit-load_construct_data</link><generator>RSS for Node</generator><lastBuildDate>Mon, 24 Aug 2026 12:09:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/279641.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 Dec 2010 01:00:05 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to BOOST serialization mit &#x27;load_construct_data&#x27; on Fri, 31 Dec 2010 01:00:05 GMT]]></title><description><![CDATA[<p>Hallo <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Ich habe eine Klasse mit konstanten, nur durch den Konstruktor gesetzten, Variablen.<br />
Bei der De-/Serialisierung mit Boost wird normalerweise ein leeres Objekt erzeugt und dann die privaten Member der Klasse einzeln zugewiesen. Bei Objekten ohne Standardkonstruktor soll man 'load_construct_data' benutzen.<br />
Das habe ich versucht, klappt aber nicht wie gewünscht, ich weiß nicht, wohin ich die Funktion schreiben soll, damit sie überschrieben und dann auch aufgerufen wird.</p>
<p>Ein vollständiges Beispiel ist unter <a href="http://nopaste.info/a4294df9fd.html" rel="nofollow">http://nopaste.info/a4294df9fd.html</a> zu finden (darunter die entsprechende Fehlermeldung) bzw hier:</p>
<pre><code>#pragma warning(push, 0) 
    #include &lt;boost/serialization/base_object.hpp&gt;
    #include &lt;boost/serialization/list.hpp&gt;
    #include &lt;boost/serialization/map.hpp&gt;
    #include &lt;boost/serialization/vector.hpp&gt;
    #include &lt;boost/serialization/shared_ptr.hpp&gt;
    #include &lt;boost/shared_ptr.hpp&gt;
    #include &lt;boost/archive/text_iarchive.hpp&gt;
    #include &lt;boost/archive/text_oarchive.hpp&gt;
    #include &lt;boost/archive/xml_oarchive.hpp&gt;
    #include &lt;boost/archive/xml_iarchive.hpp&gt;
    #include &lt;boost/serialization/nvp.hpp&gt;
    #pragma warning(pop)

    #include &lt;fstream&gt;
    #include &lt;iostream&gt;
    #include &lt;string&gt;

    class Object
    {
    public:
        Object(const unsigned int id,
            const std::string&amp; name);
        ~Object() {}    

    private:
        friend class boost::serialization::access;
        template&lt;class Archive&gt; void serialize(Archive &amp;ar, const unsigned int version)
        {
            ar &amp; boost::serialization::make_nvp(&quot;id&quot;, id);
            ar &amp; boost::serialization::make_nvp(&quot;name&quot;, name);

            if(version &gt; 0) {
            }
        }

        const unsigned int id;
        const std::string name;

        Object&amp; operator=(const Object&amp; other);
    };

    namespace boost { namespace serialization {
        template&lt;class Archive&gt; void load_construct_data(Archive&amp; ar, Object* t, const unsigned int version)
        {
            unsigned int loaded_id;
            std::string loaded_name;

            ar &amp; boost::serialization::make_nvp(&quot;id&quot;, loaded_id);
            ar &amp; boost::serialization::make_nvp(&quot;name&quot;, loaded_name);

            ::new(t)Object(loaded_id, loaded_name);
                if(version &gt; 0) {
                }
        }
    }}

    Object::Object(
        const unsigned int id,
        const std::string&amp; name):
        id(id),
        name(name)
    { }

    void saveToXML(const Object&amp; tis , const std::string&amp; filename, const std::string&amp; name) {
        std::ofstream ofs(filename.c_str());
        boost::archive::xml_oarchive oa(ofs);
        oa &lt;&lt; boost::serialization::make_nvp(name.c_str(), tis);
        ofs.close();
    }

    void loadFromXML(Object* tis, const std::string&amp; filename, const std::string&amp; name) {
        std::ifstream ifs(filename.c_str());
        boost::archive::xml_iarchive ia(ifs);
        ia &gt;&gt; boost::serialization::make_nvp(name.c_str(), tis);
        ifs.close();
    }

    int main()
    {
        // remove previously written files
        std::remove(&quot;test.txt&quot;);
        Object object(1, &quot;testobject&quot;);
        // save the object
        saveToXML(object, &quot;test.txt&quot;, &quot;testname&quot;);

        // reload the map
        Object* new_object2 = NULL;
        loadFromXML(new_object2, &quot;test.txt&quot;, &quot;testname&quot;);

        std::remove(&quot;test.txt&quot;);
    }

    /*

    1&gt;------ Erstellen gestartet: Projekt: test, Konfiguration: Release Win32 ------
    1&gt;  test.cpp
    1&gt;C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/check.hpp(162): error C2338: typex::value
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(577): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::detail::check_const_loading&lt;T&gt;(void)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              T=const unsigned int
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/common_iarchive.hpp(66): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::load&lt;Archive,T&gt;(Archive &amp;,T &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const unsigned int
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/basic_xml_iarchive.hpp(86): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::detail::common_iarchive&lt;Archive&gt;::load_override&lt;T&gt;(T &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const unsigned int
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/xml_iarchive.hpp(93): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::basic_xml_iarchive&lt;Archive&gt;::load_override&lt;const unsigned int&gt;(const boost::serialization::nvp&lt;T&gt; &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const unsigned int
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/interface_iarchive.hpp(60): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::xml_iarchive_impl&lt;Archive&gt;::load_override&lt;T&gt;(T &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const boost::serialization::nvp&lt;const unsigned int&gt;
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/interface_iarchive.hpp(67): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;Archive &amp;boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator &gt;&gt;&lt;T&gt;(T &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const boost::serialization::nvp&lt;const unsigned int&gt;
    1&gt;          ]
    1&gt;          test.cpp(30): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;Archive &amp;boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator &amp;&lt;const boost::serialization::nvp&lt;T&gt;&gt;(const boost::serialization::nvp&lt;T&gt; &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const unsigned int
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/serialization/access.hpp(118): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void Object::serialize&lt;Archive&gt;(Archive &amp;,const unsigned int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/serialization/serialization.hpp(69): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::serialization::access::serialize&lt;Archive,T&gt;(Archive &amp;,T &amp;,const unsigned int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/serialization/serialization.hpp(128): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::serialization::serialize&lt;Archive,T&gt;(Archive &amp;,T &amp;,const unsigned int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(192): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::serialization::serialize_adl&lt;Archive,T&gt;(Archive &amp;,T &amp;,const unsigned int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(170): Bei der Kompilierung der  Klassen-template der void boost::archive::detail::iserializer&lt;Archive,T&gt;::load_object_data(boost::archive::detail::basic_iarchive &amp;,void *,const unsigned int) const-Memberfunktion
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(208): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;boost::archive::detail::iserializer&lt;Archive,T&gt;&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(205): Bei der Kompilierung der  Klassen-template der const boost::archive::detail::basic_iserializer &amp;boost::archive::detail::pointer_iserializer&lt;Archive,T&gt;::get_basic_serializer(void) const-Memberfunktion
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/interface_iarchive.hpp(54): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template &quot;boost::archive::detail::pointer_iserializer&lt;Archive,T&gt;&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(459): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;const boost::archive::detail::basic_pointer_iserializer *boost::archive::detail::interface_iarchive&lt;Archive&gt;::register_type&lt;T&gt;(T *)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(475): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;const boost::archive::detail::basic_pointer_iserializer *boost::archive::detail::load_pointer_type&lt;Archive&gt;::non_abstract::register_type&lt;T&gt;(Archive &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(515): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;const boost::archive::detail::basic_pointer_iserializer *boost::archive::detail::load_pointer_type&lt;Archive&gt;::register_type&lt;Object&gt;(Archive &amp;,const T &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(592): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::detail::load_pointer_type&lt;Archive&gt;::invoke&lt;T&gt;(Archive &amp;,Tptr &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object *,
    1&gt;              Tptr=Object *
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/common_iarchive.hpp(66): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::load&lt;Archive,T&gt;(Archive &amp;,T &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object *
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/basic_xml_iarchive.hpp(86): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::detail::common_iarchive&lt;Archive&gt;::load_override&lt;T&gt;(T &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object *
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/xml_iarchive.hpp(93): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::basic_xml_iarchive&lt;Archive&gt;::load_override&lt;Object*&gt;(const boost::serialization::nvp&lt;T&gt; &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object *
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/interface_iarchive.hpp(60): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::xml_iarchive_impl&lt;Archive&gt;::load_override&lt;T&gt;(T &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const boost::serialization::nvp&lt;Object *&gt;
    1&gt;          ]
    1&gt;          test.cpp(86): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;Archive &amp;boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator &gt;&gt;&lt;const boost::serialization::nvp&lt;T&gt;&gt;(const boost::serialization::nvp&lt;T&gt; &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=Object *
    1&gt;          ]
    1&gt;C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/check.hpp(162): error C2338: typex::value
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/iserializer.hpp(577): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::detail::check_const_loading&lt;T&gt;(void)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              T=const std::string
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/common_iarchive.hpp(66): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::load&lt;Archive,T&gt;(Archive &amp;,T &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const std::string
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/basic_xml_iarchive.hpp(86): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::detail::common_iarchive&lt;Archive&gt;::load_override&lt;T&gt;(T &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const std::string
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/xml_iarchive.hpp(93): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::basic_xml_iarchive&lt;Archive&gt;::load_override&lt;const std::string&gt;(const boost::serialization::nvp&lt;T&gt; &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const std::string
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/interface_iarchive.hpp(60): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;void boost::archive::xml_iarchive_impl&lt;Archive&gt;::load_override&lt;T&gt;(T &amp;,int)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const boost::serialization::nvp&lt;const std::string&gt;
    1&gt;          ]
    1&gt;          C:UsersClawgDocumentsVisual Studio 2010Projectsboost_1_45_0boost/archive/detail/interface_iarchive.hpp(67): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;Archive &amp;boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator &gt;&gt;&lt;T&gt;(T &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const boost::serialization::nvp&lt;const std::string&gt;
    1&gt;          ]
    1&gt;          test.cpp(31): Siehe Verweis auf die Instanziierung der gerade kompilierten Funktions-template &quot;Archive &amp;boost::archive::detail::interface_iarchive&lt;Archive&gt;::operator &amp;&lt;const boost::serialization::nvp&lt;T&gt;&gt;(const boost::serialization::nvp&lt;T&gt; &amp;)&quot;.
    1&gt;          with
    1&gt;          [
    1&gt;              Archive=boost::archive::xml_iarchive,
    1&gt;              T=const std::string
    1&gt;          ]
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    */
</code></pre>
<p>Jemand eine Idee?</p>
<p>Vielen Dank im voraus <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2000615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2000615</guid><dc:creator><![CDATA[Clawg]]></dc:creator><pubDate>Fri, 31 Dec 2010 01:00:05 GMT</pubDate></item></channel></rss>