<?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 Problem mit kleinem Programm zum Einstieg]]></title><description><![CDATA[<p>Guten Tag,<br />
ich hab ein Problem mit einem einfachem Programm, welches als herantast-Projekt zu boost.serialization entstanden ist. Noch signifikanter: die Fehlermeldung bezieht sich auf eine Codestelle in den boost-headern, und nur da.</p>
<p>das ganze wurde mit NetBeans und Boost 1.34.1 erstellt, g++-4.2<br />
Compilermeldung</p>
<blockquote>
<p>Running &quot;/usr/bin/make -f Makefile CONF=Debug&quot; in /media/disk/Serialization_boost</p>
<p>/usr/bin/make -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-conf<br />
make[1]: Betrete Verzeichnis '/media/disk/Serialization_boost'<br />
/usr/bin/make -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/serialization_boost<br />
make[2]: Betrete Verzeichnis '/media/disk/Serialization_boost'<br />
mkdir -p build/Debug/GNU-Linux-x86<br />
rm -f build/Debug/GNU-Linux-x86/person.o.d<br />
g++ -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/person.o.d -o build/Debug/GNU-Linux-x86/person.o person.cpp<br />
mkdir -p build/Debug/GNU-Linux-x86<br />
rm -f build/Debug/GNU-Linux-x86/main.o.d<br />
g++ -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.cpp<br />
/usr/include/boost/archive/detail/oserializer.hpp: In function »void boost::archive::save(Archive&amp;, T&amp;) [with Archive = boost::archive::text_oarchive, T = Person]«:<br />
/usr/include/boost/archive/detail/common_oarchive.hpp:62: instantiated from »void boost::archive::detail::common_oarchive&lt;Archive&gt;::save_override(T&amp;, int) [with T = Person, Archive = boost::archive::text_oarchive]«<br />
/usr/include/boost/archive/basic_text_oarchive.hpp:75: instantiated from »void boost::archive::basic_text_oarchive&lt;Archive&gt;::save_override(T&amp;, int) [with T = Person, Archive = boost::archive::text_oarchive]«<br />
/usr/include/boost/archive/detail/interface_oarchive.hpp:79: instantiated from »Archive&amp; boost::archive::detail::interface_oarchive&lt;Archive&gt;::operator&lt;&lt;(T&amp;) [with T = Person, Archive = boost::archive::text_oarchive]«<br />
main.cpp:31: instantiated from here<br />
/usr/include/boost/archive/detail/oserializer.hpp:566: Fehler: Ungültige Anwendung von »sizeof« auf unvollständigen Typen »boost::STATIC_ASSERTION_FAILURE&lt;false&gt;«<br />
make[2]: *** [build/Debug/GNU-Linux-x86/main.o] Fehler 1<br />
make[2]: Verlasse Verzeichnis '/media/disk/Serialization_boost'<br />
make[1]: *** [.build-conf] Fehler 2</p>
</blockquote>
<p>Die Headerdatei sieht so aus:</p>
<pre><code>#ifndef _PERSON_H
#define	_PERSON_H

#include &lt;boost/serialization/string.hpp&gt;
#include &lt;boost/serialization/vector.hpp&gt;

using std::string;
using std::vector;

#include &lt;boost/archive/text_iarchive.hpp&gt;
#include &lt;boost/archive/text_oarchive.hpp&gt;

class Person {
private:
    //Teil von Boost
    friend class boost::serialization::access;
    //Serialisierungsfunktion Boost::Serialization
    template&lt;class Archive&gt;
    void serialize(Archive&amp; ar, const unsigned int version);
public:
    Person(){}
    Person(std::string nachname, std::string vorname);
    Person(const Person&amp; orig);
    virtual ~Person();

    void add_geschwister(const Person&amp; name);
    void show_geschwister() const;

    string getVorname() const { return vorname; }
    string getNachname() const { return nachname; }
private:
    string vorname;
    string nachname;
    vector&lt;Person&gt; geschwister;
};

#endif	/* _PERSON_H */
</code></pre>
<p>Die Implementierungsdatei sieht so aus:</p>
<pre><code>#include &lt;iostream&gt;

#include &quot;person.h&quot;

Person::Person(std::string n, std::string v):
    vorname(v), nachname(n){
}

Person::Person(const Person&amp; orig) {
    nachname = orig.nachname;
    vorname = orig.vorname;
    geschwister = orig.geschwister;
}

Person::~Person() {
}

//Boost::Serialisation
template&lt;class Archive&gt;
void Person::serialize(Archive&amp; ar, const unsigned int version)
{
    ar &amp; vorname;
    ar &amp; nachname;
    ar &amp; geschwister;
}

void Person::add_geschwister(const Person&amp; person)
{
    geschwister.push_back(person);
}

void Person::show_geschwister() const
{
    for(vector&lt;Person&gt;::const_iterator iter = geschwister.begin();
        iter != geschwister.end(); iter++)
    {
        std::cout &lt;&lt; iter-&gt;getVorname() &lt;&lt; std::endl;
    }
}
</code></pre>
<p>und die main.cpp so:</p>
<pre><code>#include &lt;iostream&gt;
//#include &lt;string&gt;
#include &quot;person.h&quot;

#include &lt;fstream&gt;
#include &lt;boost/archive/text_iarchive.hpp&gt;
#include &lt;boost/archive/text_oarchive.hpp&gt;

/*
 * 
 */
int main(int argc, char** argv) {

    Person peter(&quot;Peter&quot;,&quot;Silie&quot;);
    Person a(&quot;Anna&quot;, &quot;Nass&quot;);
    Person b(&quot;Tom&quot;, &quot;Bola&quot;);
    peter.add_geschwister(a);
    peter.add_geschwister(b);

    {
        std::ofstream ofs(&quot;speicher.bin&quot;);

        boost::archive::text_oarchive oa(ofs);
        oa &lt;&lt; peter;
    }

    Person newPeter;
    std::ifstream ifs(&quot;speicher.bin&quot;);
    boost::archive::text_iarchive ia(ifs);

    ia &gt;&gt; newPeter;

    newPeter.show_geschwister();

    return 0;
}
</code></pre>
<p>Im Internet habe ich leider nichts finden können, was zu der Fehlermeldung passt.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/227567/boost-serialization-problem-mit-kleinem-programm-zum-einstieg</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 17:59:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/227567.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Nov 2008 10:25:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost.Serialization Problem mit kleinem Programm zum Einstieg on Mon, 17 Nov 2008 10:25:32 GMT]]></title><description><![CDATA[<p>Guten Tag,<br />
ich hab ein Problem mit einem einfachem Programm, welches als herantast-Projekt zu boost.serialization entstanden ist. Noch signifikanter: die Fehlermeldung bezieht sich auf eine Codestelle in den boost-headern, und nur da.</p>
<p>das ganze wurde mit NetBeans und Boost 1.34.1 erstellt, g++-4.2<br />
Compilermeldung</p>
<blockquote>
<p>Running &quot;/usr/bin/make -f Makefile CONF=Debug&quot; in /media/disk/Serialization_boost</p>
<p>/usr/bin/make -f nbproject/Makefile-Debug.mk SUBPROJECTS= .build-conf<br />
make[1]: Betrete Verzeichnis '/media/disk/Serialization_boost'<br />
/usr/bin/make -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/serialization_boost<br />
make[2]: Betrete Verzeichnis '/media/disk/Serialization_boost'<br />
mkdir -p build/Debug/GNU-Linux-x86<br />
rm -f build/Debug/GNU-Linux-x86/person.o.d<br />
g++ -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/person.o.d -o build/Debug/GNU-Linux-x86/person.o person.cpp<br />
mkdir -p build/Debug/GNU-Linux-x86<br />
rm -f build/Debug/GNU-Linux-x86/main.o.d<br />
g++ -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.cpp<br />
/usr/include/boost/archive/detail/oserializer.hpp: In function »void boost::archive::save(Archive&amp;, T&amp;) [with Archive = boost::archive::text_oarchive, T = Person]«:<br />
/usr/include/boost/archive/detail/common_oarchive.hpp:62: instantiated from »void boost::archive::detail::common_oarchive&lt;Archive&gt;::save_override(T&amp;, int) [with T = Person, Archive = boost::archive::text_oarchive]«<br />
/usr/include/boost/archive/basic_text_oarchive.hpp:75: instantiated from »void boost::archive::basic_text_oarchive&lt;Archive&gt;::save_override(T&amp;, int) [with T = Person, Archive = boost::archive::text_oarchive]«<br />
/usr/include/boost/archive/detail/interface_oarchive.hpp:79: instantiated from »Archive&amp; boost::archive::detail::interface_oarchive&lt;Archive&gt;::operator&lt;&lt;(T&amp;) [with T = Person, Archive = boost::archive::text_oarchive]«<br />
main.cpp:31: instantiated from here<br />
/usr/include/boost/archive/detail/oserializer.hpp:566: Fehler: Ungültige Anwendung von »sizeof« auf unvollständigen Typen »boost::STATIC_ASSERTION_FAILURE&lt;false&gt;«<br />
make[2]: *** [build/Debug/GNU-Linux-x86/main.o] Fehler 1<br />
make[2]: Verlasse Verzeichnis '/media/disk/Serialization_boost'<br />
make[1]: *** [.build-conf] Fehler 2</p>
</blockquote>
<p>Die Headerdatei sieht so aus:</p>
<pre><code>#ifndef _PERSON_H
#define	_PERSON_H

#include &lt;boost/serialization/string.hpp&gt;
#include &lt;boost/serialization/vector.hpp&gt;

using std::string;
using std::vector;

#include &lt;boost/archive/text_iarchive.hpp&gt;
#include &lt;boost/archive/text_oarchive.hpp&gt;

class Person {
private:
    //Teil von Boost
    friend class boost::serialization::access;
    //Serialisierungsfunktion Boost::Serialization
    template&lt;class Archive&gt;
    void serialize(Archive&amp; ar, const unsigned int version);
public:
    Person(){}
    Person(std::string nachname, std::string vorname);
    Person(const Person&amp; orig);
    virtual ~Person();

    void add_geschwister(const Person&amp; name);
    void show_geschwister() const;

    string getVorname() const { return vorname; }
    string getNachname() const { return nachname; }
private:
    string vorname;
    string nachname;
    vector&lt;Person&gt; geschwister;
};

#endif	/* _PERSON_H */
</code></pre>
<p>Die Implementierungsdatei sieht so aus:</p>
<pre><code>#include &lt;iostream&gt;

#include &quot;person.h&quot;

Person::Person(std::string n, std::string v):
    vorname(v), nachname(n){
}

Person::Person(const Person&amp; orig) {
    nachname = orig.nachname;
    vorname = orig.vorname;
    geschwister = orig.geschwister;
}

Person::~Person() {
}

//Boost::Serialisation
template&lt;class Archive&gt;
void Person::serialize(Archive&amp; ar, const unsigned int version)
{
    ar &amp; vorname;
    ar &amp; nachname;
    ar &amp; geschwister;
}

void Person::add_geschwister(const Person&amp; person)
{
    geschwister.push_back(person);
}

void Person::show_geschwister() const
{
    for(vector&lt;Person&gt;::const_iterator iter = geschwister.begin();
        iter != geschwister.end(); iter++)
    {
        std::cout &lt;&lt; iter-&gt;getVorname() &lt;&lt; std::endl;
    }
}
</code></pre>
<p>und die main.cpp so:</p>
<pre><code>#include &lt;iostream&gt;
//#include &lt;string&gt;
#include &quot;person.h&quot;

#include &lt;fstream&gt;
#include &lt;boost/archive/text_iarchive.hpp&gt;
#include &lt;boost/archive/text_oarchive.hpp&gt;

/*
 * 
 */
int main(int argc, char** argv) {

    Person peter(&quot;Peter&quot;,&quot;Silie&quot;);
    Person a(&quot;Anna&quot;, &quot;Nass&quot;);
    Person b(&quot;Tom&quot;, &quot;Bola&quot;);
    peter.add_geschwister(a);
    peter.add_geschwister(b);

    {
        std::ofstream ofs(&quot;speicher.bin&quot;);

        boost::archive::text_oarchive oa(ofs);
        oa &lt;&lt; peter;
    }

    Person newPeter;
    std::ifstream ifs(&quot;speicher.bin&quot;);
    boost::archive::text_iarchive ia(ifs);

    ia &gt;&gt; newPeter;

    newPeter.show_geschwister();

    return 0;
}
</code></pre>
<p>Im Internet habe ich leider nichts finden können, was zu der Fehlermeldung passt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1615869</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1615869</guid><dc:creator><![CDATA[chris3k]]></dc:creator><pubDate>Mon, 17 Nov 2008 10:25:32 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Serialization Problem mit kleinem Programm zum Einstieg on Mon, 17 Nov 2008 11:50:13 GMT]]></title><description><![CDATA[<p>ein STATIC_ASSERT schlägt fehl, das heißt dass dein code eine notwendige bedingung nicht erfüllt, die bereits während des kompilierens geprüft wird.</p>
<p>ich kenne mich mit boost nicht genug aus um das problem zu lokalisieren, aber ich rate einfach mal, dass deine klasse 'Person' nicht alle anforderungen erfüllt, um mit boost::serialization zu funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1615899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1615899</guid><dc:creator><![CDATA[ins blaue]]></dc:creator><pubDate>Mon, 17 Nov 2008 11:50:13 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Serialization Problem mit kleinem Programm zum Einstieg on Mon, 17 Nov 2008 14:54:13 GMT]]></title><description><![CDATA[<p>hi,</p>
<p>ein seriallizer bietet ja die möglichkeit ein object als bitstream über zb RS232 zu übertraggen? soweit ich weiss auch platform unabhängig. gibt es dafür sowas wie seriallizer protokolle? kann könnte ja auf einer seite java und auf der anderen seite c++ haben?</p>
<p>lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1616005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1616005</guid><dc:creator><![CDATA[cpp1]]></dc:creator><pubDate>Mon, 17 Nov 2008 14:54:13 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Serialization Problem mit kleinem Programm zum Einstieg on Wed, 19 Nov 2008 11:36:43 GMT]]></title><description><![CDATA[<p>hu?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1617008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1617008</guid><dc:creator><![CDATA[cpp1]]></dc:creator><pubDate>Wed, 19 Nov 2008 11:36:43 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Serialization Problem mit kleinem Programm zum Einstieg on Wed, 19 Nov 2008 11:38:12 GMT]]></title><description><![CDATA[<p>ist man als user in der lage eines nach der serialisierung gelieferte xml format zu verstehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1617009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1617009</guid><dc:creator><![CDATA[cpp1]]></dc:creator><pubDate>Wed, 19 Nov 2008 11:38:12 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Serialization Problem mit kleinem Programm zum Einstieg on Wed, 19 Nov 2008 12:51:07 GMT]]></title><description><![CDATA[<p>also das erste was mir auffällt:</p>
<p>die Serialisierungsmethode ist ein template, die du erst in der cpp definierst, das haut bei templates nicht hin! Du musst die Methode direkt im Header definieren.</p>
<p>Versuch das bitte und teil uns mit, ob es dann funktionert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";-)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1617060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1617060</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 19 Nov 2008 12:51:07 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Serialization Problem mit kleinem Programm zum Einstieg on Wed, 19 Nov 2008 12:52:11 GMT]]></title><description><![CDATA[<p>cpp1 schrieb:</p>
<blockquote>
<p>ist man als user in der lage eines nach der serialisierung gelieferte xml format zu verstehen?</p>
</blockquote>
<p>ist schon länger her, aber wenn ich es richtig in Erinnerung habe, dann schon!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1617061</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1617061</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 19 Nov 2008 12:52:11 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Serialization Problem mit kleinem Programm zum Einstieg on Wed, 19 Nov 2008 12:56:05 GMT]]></title><description><![CDATA[<p>cpp1 schrieb:</p>
<blockquote>
<p>hi,</p>
<p>ein seriallizer bietet ja die möglichkeit ein object als bitstream über zb RS232 zu übertraggen? soweit ich weiss auch platform unabhängig. gibt es dafür sowas wie seriallizer protokolle? kann könnte ja auf einer seite java und auf der anderen seite c++ haben?</p>
<p>lg</p>
</blockquote>
<p>für diese zwecke würde ich dann eher auf middleware ansätze, wie CORBA oder besser gleich ICE. Web-Services (via SOAP) sind auch denkbar. Das Problem ist hier, dass der bitstream immer gleich interpretiert werden muss und die Klassen in unterschiedlichen Sprachen und Plattformen anders abgebildet werden. Hier helfen IDL-Beschreibungen weiter...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1617063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1617063</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Wed, 19 Nov 2008 12:56:05 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Serialization Problem mit kleinem Programm zum Einstieg on Fri, 21 Nov 2008 09:26:41 GMT]]></title><description><![CDATA[<p>CORBA ist eher nicht geeignet.</p>
<p>ziel ist es in meinem projekt die gui und verarbeitung zu trennen. ohne gui möchte ich über die xml auch in der lage sein die weiteren schritte zu realisieren...</p>
<p>die gui soll eine xml datei erzeugen und der input der verabeitung sein...<br />
der user soll auch in der lage sein eine eigene xml datei zu erstellen usw...</p>
<p>da ist serialization das falsche thema?</p>
<p>bye</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618155</guid><dc:creator><![CDATA[cpp1]]></dc:creator><pubDate>Fri, 21 Nov 2008 09:26:41 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Serialization Problem mit kleinem Programm zum Einstieg on Fri, 21 Nov 2008 09:27:53 GMT]]></title><description><![CDATA[<p>ich könnte statt der gui eine command line appl. draus machen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618156</guid><dc:creator><![CDATA[cpp1]]></dc:creator><pubDate>Fri, 21 Nov 2008 09:27:53 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Serialization Problem mit kleinem Programm zum Einstieg on Fri, 21 Nov 2008 09:30:23 GMT]]></title><description><![CDATA[<p>cpp1 schrieb:</p>
<blockquote>
<p>da ist serialization das falsche thema?</p>
</blockquote>
<p>kommt darauf an, wie komplex das ganze ist. wenn du datenströme zwischen C++ Apps austauscht, sind Datenströme mit serialsierten Strömen das eifnachste und sicherste... Allerdings wirst du damit Probleme bekommen, wenn du zwischen zwei Sprachen oder Platformen Daten austauscht, es sei denn du erweiterst deine Klassen um eigene IDL Methoden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618159</guid><dc:creator><![CDATA[muffmolch]]></dc:creator><pubDate>Fri, 21 Nov 2008 09:30:23 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Serialization Problem mit kleinem Programm zum Einstieg on Fri, 21 Nov 2008 09:37:36 GMT]]></title><description><![CDATA[<p>ich habe auch vor die gui mit python zu machen und den rest mit c++</p>
<p>also keine serialisierung, stattdessen ein ganz normaler xml parser nehmen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618166</guid><dc:creator><![CDATA[cpp1]]></dc:creator><pubDate>Fri, 21 Nov 2008 09:37:36 GMT</pubDate></item><item><title><![CDATA[Reply to Boost.Serialization Problem mit kleinem Programm zum Einstieg on Sun, 23 Nov 2008 17:09:49 GMT]]></title><description><![CDATA[<p>hu?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1619489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1619489</guid><dc:creator><![CDATA[cpp1]]></dc:creator><pubDate>Sun, 23 Nov 2008 17:09:49 GMT</pubDate></item></channel></rss>