<?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[Wie serialisieren mittels boost?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Frage zu boost. Ich würde gerne eine Object komplett serialisieren, allerdings gibt es Probleme mit dem speichern eines Pointerarrays und den zugehörigen Objekten.<br />
Bis jetzt habe ich in die nötigen Headerdateien:</p>
<pre><code>friend class boost::serialization::access;
template&lt;class Archive&gt;
void serialize(Archive &amp; ar, const unsigned int version) {...}

[...]

BOOST_CLASS_EXPORT_KEY(jeweiliger Klassenname)
</code></pre>
<p>ergänzt. Das Problemobjekt ist folgendes:</p>
<pre><code>BF **root = NULL;
</code></pre>
<p>soll gespeichert werden, allerdings geht es nicht mit:</p>
<pre><code>void serialize(Archive &amp; ar, const unsigned int version) {
	ar &amp; param;
	ar &amp; insertedFiles;
	ar &amp; queue;
	ar &amp; currInsertLeafPosition;
	ar &amp; *root; // oder ar &amp; root;
}
</code></pre>
<p>in der serialize Methode. Auch ein explizites aufrufen der einzelnen Objekte innerhalb des Arrays funktionierte nicht:</p>
<pre><code>void serialize(Archive &amp; ar, const unsigned int version) {
	ar &amp; param;
	ar &amp; insertedFiles;
	ar &amp; queue;
	ar &amp; currInsertLeafPosition;
	// nicht alle Pointer des Arrays zeigen auf ein Objekt
	for (int i = param-&gt;getMinBytesToAdress(); i &lt;= param-&gt;getMaxBytesToAdress(); i++) {
		ar &amp; boost::serialization::make_array(root[i], param-&gt;getMaxBytes());
	}
}
</code></pre>
<p>Dieses Beispiel wirft keine Fehlermeldung sondern das Programm wird einfach während des Speichervorgangs beendet (nach dem Speichern ist noch eine Konsolenausgabe, die niemals ausgegeben wird).</p>
<p>Bin für jeden Tipp dankbar <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/330676/wie-serialisieren-mittels-boost</link><generator>RSS for Node</generator><lastBuildDate>Thu, 02 Jul 2026 18:23:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330676.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Jan 2015 14:23:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie serialisieren mittels boost? on Wed, 21 Jan 2015 14:23:08 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Frage zu boost. Ich würde gerne eine Object komplett serialisieren, allerdings gibt es Probleme mit dem speichern eines Pointerarrays und den zugehörigen Objekten.<br />
Bis jetzt habe ich in die nötigen Headerdateien:</p>
<pre><code>friend class boost::serialization::access;
template&lt;class Archive&gt;
void serialize(Archive &amp; ar, const unsigned int version) {...}

[...]

BOOST_CLASS_EXPORT_KEY(jeweiliger Klassenname)
</code></pre>
<p>ergänzt. Das Problemobjekt ist folgendes:</p>
<pre><code>BF **root = NULL;
</code></pre>
<p>soll gespeichert werden, allerdings geht es nicht mit:</p>
<pre><code>void serialize(Archive &amp; ar, const unsigned int version) {
	ar &amp; param;
	ar &amp; insertedFiles;
	ar &amp; queue;
	ar &amp; currInsertLeafPosition;
	ar &amp; *root; // oder ar &amp; root;
}
</code></pre>
<p>in der serialize Methode. Auch ein explizites aufrufen der einzelnen Objekte innerhalb des Arrays funktionierte nicht:</p>
<pre><code>void serialize(Archive &amp; ar, const unsigned int version) {
	ar &amp; param;
	ar &amp; insertedFiles;
	ar &amp; queue;
	ar &amp; currInsertLeafPosition;
	// nicht alle Pointer des Arrays zeigen auf ein Objekt
	for (int i = param-&gt;getMinBytesToAdress(); i &lt;= param-&gt;getMaxBytesToAdress(); i++) {
		ar &amp; boost::serialization::make_array(root[i], param-&gt;getMaxBytes());
	}
}
</code></pre>
<p>Dieses Beispiel wirft keine Fehlermeldung sondern das Programm wird einfach während des Speichervorgangs beendet (nach dem Speichern ist noch eine Konsolenausgabe, die niemals ausgegeben wird).</p>
<p>Bin für jeden Tipp dankbar <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/2438839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438839</guid><dc:creator><![CDATA[Norbert987]]></dc:creator><pubDate>Wed, 21 Jan 2015 14:23:08 GMT</pubDate></item><item><title><![CDATA[Reply to Wie serialisieren mittels boost? on Wed, 21 Jan 2015 14:37:21 GMT]]></title><description><![CDATA[<p>Norbert987 schrieb:</p>
<blockquote>
<p>Dieses Beispiel wirft keine Fehlermeldung sondern das Programm wird einfach während des Speichervorgangs beendet</p>
</blockquote>
<p>Ich vermute, die &quot;Fehlermeldung&quot; (z.B. eine Exception) ist einfach nicht sichtbar für dich:</p>
<p>Hier ein Vorschlag um sie sichtbar zu machen:</p>
<p>1. Baue dein Programm mit Debug Info<br />
2. Starte das Programm im Debugger<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /> Mehr Fehlerinfo</p>
<p>Ausserdem:</p>
<p>Mach ein vollständiges Minibeispiel, das den Fehler zeigt. So kann dir hier sehr viel effizienter und effektiver geolfen werden.</p>
<p>Hier mal ein wenig wildes Raten:<br />
Fehlt dir ev. <code>BOOST_CLASS_EXPORT_IMPLEMENT</code> ?</p>
<p><em>Edit:</em> Machst du deine Versuche unter Windows oder unter Linux und mit welchem Compiler/IDE?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2438843</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2438843</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Wed, 21 Jan 2015 14:37:21 GMT</pubDate></item><item><title><![CDATA[Reply to Wie serialisieren mittels boost? on Thu, 22 Jan 2015 22:44:58 GMT]]></title><description><![CDATA[<p>Vielen Dank für deine Antwort. Ein Minimalbeispiel mit dem selben Fehler bekomme ich leider nicht konstruiert. Es läuft wie gewünscht, es wurden auch die Objekte gespeichert, welche in dem dynamischen Array liegen (BF **root = NULL;).</p>
<p>Ich entwickel unter Ubuntu in Eclipse &quot;GCC C++ Compiler&quot;.</p>
<p>Wenn ich das Programm im Debugmodus laufen lasse, kommt folgender Fehler: <em>0x00007ffff7bb1765 in boost::archive::basic_binary_oprimitive&lt;boost::archive::binary_oarchive, char, std::char_traits&lt;char&gt; &gt;::save(std::string const&amp;) () from /usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.55.0</em></p>
<p>Googln gab das Resultat, dass die Bibliotheken nicht richtig gelinkt werden, aber ich habe in meinem Programm, wie auch dem Minimalbsp unter <em>GCC C++ Linker -&gt; Libraries -&gt; Libraries: boost_serialization</em> und unter <em>GCC C++ Compiler -&gt; Inlcudes -&gt; Include paths: /usr/include/boost</em> eingetragen.</p>
<p>Über <em>BOOST_CLASS_EXPORT_IMPLEMENT</em> bin ich auch gestoplert, allerdings habe ich es scheinbar immer an die falsche Stelle geschrieben, so dass das Projekt nicht mehr kompilierte... Es gehört doch in die *.cpp Datei oder? Ich habe es unter den #includes und am ende der Datei versucht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Ist das hilfreich, oder soll ich nochmal am Minimalbsp basteln?</p>
<p>Vielen Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439145</guid><dc:creator><![CDATA[Norbert987]]></dc:creator><pubDate>Thu, 22 Jan 2015 22:44:58 GMT</pubDate></item><item><title><![CDATA[Reply to Wie serialisieren mittels boost? on Fri, 23 Jan 2015 09:52:53 GMT]]></title><description><![CDATA[<p>Norbert987 schrieb:</p>
<blockquote>
<p>Über <em>BOOST_CLASS_EXPORT_IMPLEMENT</em> bin ich auch gestoplert, allerdings habe ich es scheinbar immer an die falsche Stelle geschrieben, so dass das Projekt nicht mehr kompilierte... Es gehört doch in die *.cpp Datei oder?</p>
</blockquote>
<p>Korrekt, es gehört in die *.cpp Datei - <strong>und zwar müssen davor unbedingt alle Archive includiert werden, welche benutzt werden sollen</strong>.</p>
<p>z.B.</p>
<p>MyType.hpp</p>
<pre><code>// Include-Guards + Includes etc.

class MyType
  : public MyBase
{
// ...
public:
  template &lt;typename Archive&gt;
  void serialize(Archive&amp; archive, unsigned int version)
  {
    // ...
  }
};

BOOST_CLASS_EXPORT_KEY(MyType)
</code></pre>
<p>MyType.cpp</p>
<pre><code>#include &quot;MyType.hpp&quot;

// Implementation von MyType

#include &lt;boost/archive/binary_oarchive.hpp&gt;
#include &lt;boost/archive/binary_iarchive.hpp&gt;

BOOST_CLASS_EXPORT_IMPLEMENT(MyType)
</code></pre>
<p>Zu exportieren brauchst du die Klasse nur, wenn du über ein Zeiger auf die Basis-Klasse (de-)serialisieren möchtest (deshalb <code>MyBase</code> im Bsp.).</p>
<p>Ist das überhaupt der Fall bei dir?</p>
<p>Norbert987 schrieb:</p>
<blockquote>
<p>Ist das hilfreich, oder soll ich nochmal am Minimalbsp basteln?</p>
</blockquote>
<p>Hmm... ja, ich würde nochmals versuchen ein Minimal-Bsp. hinzukriegen. Ev. ist es am einfachsten, wenn du dein bestehender Code immer mehr herunter-strippst, bis nur noch das Problem überig ist.</p>
<p><em>Edit:</em> Versuche doch mal statisch gegen <code>Boost.Serialization</code> zu linken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439166</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Fri, 23 Jan 2015 09:52:53 GMT</pubDate></item><item><title><![CDATA[Reply to Wie serialisieren mittels boost? on Sun, 25 Jan 2015 16:12:55 GMT]]></title><description><![CDATA[<p>Vielen Dank theta, das hat mir sehr geholfen. Es lag daran, dass ich nicht alle Pointer des Arrays auf Objekte zeigten - diese sollte man dann auch mit NULL initialisieren... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Das Speichern funktioniert soweit, solange keine abgeleiteten Klassen gespeichert werden, dass Daten geschrieben werden und keine Exception geworfen wird. Allerdings hängts nun beim Lesen/Schreiben der Daten bei Abgeleiteten Objekten. Die Fehlermeldung lautet:</p>
<pre><code>$1 = 0xff
Die Ziel-Speicherreihenfolge wird automatisch gesetzt (derzeit Little Endian)
[Thread debugging using libthread_db enabled]
Using host libthread_db library &quot;/lib/x86_64-linux-gnu/libthread_db.so.1&quot;.

Temporary breakpoint 1, main (argc=1, argv=0x7fffffffded8) at ../Main.cpp:15
15	int main(int argc, char **argv) {

Program received signal SIGSEGV, Segmentation fault.
0x000000000040ea9e in boost::archive::text_oarchive_impl&lt;boost::archive::text_oarchive&gt;::save&lt;unsigned char&gt; (this=0x7fffffffd910, t=@0x0: &lt;error reading variable&gt;) at /usr/include/boost/archive/text_oarchive.hpp:61
61	        basic_text_oprimitive&lt;std::ostream&gt;::save(t);

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
Quit
</code></pre>
<p>Dies ist ein Minimalbeispiel:</p>
<p>Main.cpp:</p>
<pre><code>#include &lt;boost/archive/text_oarchive.hpp&gt;
#include &lt;boost/archive/text_iarchive.hpp&gt;
#include &lt;boost/serialization/export.hpp&gt;
#include &lt;boost/serialization/base_object.hpp&gt;
#include &lt;boost/serialization/utility.hpp&gt;
#include &lt;boost/serialization/list.hpp&gt;
#include &lt;boost/serialization/assume_abstract.hpp&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;

#include &quot;VirtElement.h&quot;
#include &quot;Element.h&quot;

int main(int argc, char **argv) {
	VirtElement *e = new Element;
	e-&gt;init(5, 10);

    std::ofstream ofs(&quot;/home/tobias/workspace/boost_test/test.dat&quot;);
    boost::archive::text_oarchive oa(ofs);
    e-&gt;printData();
    oa &lt;&lt; e;
    std::cout &lt;&lt; &quot;data was written&quot; &lt;&lt; std::endl;
    ofs.close();

    VirtElement *e_new = new Element;
    std::cout &lt;&lt; &quot;loading data&quot; &lt;&lt; std::endl;
    std::ifstream ifs(&quot;/home/tobias/workspace/boost_test/test.dat&quot;);
    boost::archive::text_iarchive ia(ifs);
    ia &gt;&gt; e_new;
    ofs.close();
    std::cout &lt;&lt; &quot;data loaded&quot; &lt;&lt; std::endl;

    e_new-&gt;printData();

    delete e_new;

	return EXIT_SUCCESS;
}
</code></pre>
<p>VirtElement:</p>
<pre><code>#ifndef VIRTELEMENT_H_
#define VIRTELEMENT_H_

#include &lt;boost/serialization/export.hpp&gt;
#include &lt;boost/archive/binary_oarchive.hpp&gt;
#include &lt;boost/archive/binary_iarchive.hpp&gt;

class VirtElement {
public:
	friend class boost::serialization::access;
	template&lt;class Archive&gt;
	void serialize(Archive &amp; ar, const unsigned int version) {
        ar &amp; size;
        ar &amp; boost::serialization::make_array(data, size);
	}
	VirtElement();
	virtual ~VirtElement();

	int size;
	unsigned char *data;

	void init(int s, int e);
	void printData();
};

BOOST_CLASS_EXPORT_KEY(VirtElement)

#endif /* VIRTELEMENT_H_ */

// ab híer die VirtElement.cpp
#include &quot;VirtElement.h&quot;

 BOOST_CLASS_EXPORT_IMPLEMENT(VirtElement)

VirtElement::VirtElement() {
	// TODO Auto-generated constructor stub

}

VirtElement::~VirtElement() {
	// TODO Auto-generated destructor stub
}

void VirtElement::init(int s, int e) {

}
void VirtElement::printData() {

}
</code></pre>
<p>Und Elementklasse:</p>
<pre><code>#ifndef ELEMENT_H_
#define ELEMENT_H_

#include &lt;boost/serialization/export.hpp&gt;
#include &lt;boost/archive/text_oarchive.hpp&gt;
#include &lt;boost/archive/text_iarchive.hpp&gt;
#include &lt;boost/serialization/base_object.hpp&gt;
#include &lt;iostream&gt;

#include &quot;VirtElement.h&quot;

class Element : public VirtElement {
private:
	friend class boost::serialization::access;
	template&lt;class Archive&gt;
	void serialize(Archive &amp; ar, const unsigned int version) {
		ar &amp; boost::serialization::base_object&lt;VirtElement&gt;(*this);
	}

public:
	Element();
	virtual ~Element();

	void setData(unsigned char *d);
	unsigned char *getData();
	void init(int s, int e);
	void printData();
};

BOOST_CLASS_EXPORT_KEY(Element)

#endif /* ELEMENT_H_ */

// ab hier die Element.cpp
#include &quot;Element.h&quot;

 BOOST_CLASS_EXPORT_IMPLEMENT(Element)

Element::Element() {
	size = -1;
	data = 0;
}

Element::~Element() {
	if (data != 0)
		delete []data;
}

void Element::setData(unsigned char *d) {
	data = d;
}

unsigned char *Element::getData() {
	return data;
}

void Element::printData() {
	std::cout &lt;&lt; &quot;write size: &quot; &lt;&lt; size &lt;&lt; std::endl;
	for (int i = 0; i &lt; size; i++) {
		std::cout &lt;&lt; data[i];
	}
	std::cout &lt;&lt; std::endl;
}
void Element::init(int s, int e) {
	size = s;
	data = new unsigned char [s];
	for (int i = 0; i &lt; size; i++) {
		data[i] = 'a' + e;
	}
}
</code></pre>
<p>Die Idee ist eigentlich, beliebige Klassen von der VirtElement abzuleiten und diese dann einfach austauschen zu können. So kann ich in der Main in Zeile 19 und 29</p>
<blockquote>
<p>Element *e = new Element;</p>
</blockquote>
<p>schreiben, allerdings verfehlt das den Grund der Ableitung. Dann funktioniert das Speichern, aber beim Laden kommt folgender Fehler:</p>
<pre><code>$1 = 0xff
Die Ziel-Speicherreihenfolge wird automatisch gesetzt (derzeit Little Endian)
[Thread debugging using libthread_db enabled]
Using host libthread_db library &quot;/lib/x86_64-linux-gnu/libthread_db.so.1&quot;.

Temporary breakpoint 1, main (argc=1, argv=0x7fffffffde98) at ../Main.cpp:15
15	int main(int argc, char **argv) {

Program received signal SIGSEGV, Segmentation fault.
0x000000000040ed0e in boost::archive::basic_text_iprimitive&lt;std::istream&gt;::load (this=0x7fffffffd940, t=@0x0: &lt;error reading variable&gt;) at /usr/include/boost/archive/basic_text_iprimitive.hpp:114
114	        t = i;

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
Quit
</code></pre>
<p>Das leere Methoden in der VirtElement.cpp erzeugt werden müssen scheint mir unschön, allerdings wollte der Compiler keine virtuelle Methode ohne Rumpf akzeptieren...</p>
<p>Hast du dazu noch eine Idee? Vielen Dank im Voraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439646</guid><dc:creator><![CDATA[Norbert987]]></dc:creator><pubDate>Sun, 25 Jan 2015 16:12:55 GMT</pubDate></item><item><title><![CDATA[Reply to Wie serialisieren mittels boost? on Mon, 26 Jan 2015 09:45:08 GMT]]></title><description><![CDATA[<p><em>Edit (1):</em><br />
- Zeile 17 in Main.cpp ( <code>e-&gt;init(5, 10);</code> ) ruft deine leere Implementation auf in <code>VirtElement</code> auf, weil <code>VirtElement::init(..)</code> nicht virtuell ist. Das führt wohl zu Problemen, denn -1 ist vermutlich für <code>boost::serialization::make_array(..)</code> unverträglich. Noch besser wäre es hier Konstruktoren zu verwenden.<br />
- Vermutlich möchtest du auch <code>VirtElement::printData(..)</code> virtuell machen.</p>
<p><em>Edit (2):</em></p>
<ul>
<li><code>VirtElement::data</code> kannst zwar mit <code>boost::serialization::make_array(..)</code> serialisiert werden, allerdings nicht so einfach wieder deserialisiert werden - bzw. nicht direkt, denn mit <code>...::make_array(..)</code> wird laut Dokumentation kein Speicher alloziert, was hier ja nötig wäre. Vermutlich könnte man <code>VirtElement::serialize(..)</code> in <code>save(..)</code> / <code>load(..)</code> aufteilen und beim Laden den entsprechenden Speicher für <code>VirtElement::data</code> anfordern, <strong>allerdings würde ich gerade auf die Variante mit dem std::vector&lt;unsigned char&gt; umstellen. Das ist weniger fehleranfällig, kürzer und verträgt sich erst noch mit Exceptions.</strong></li>
</ul>
<p><em>Orginal:</em><br />
Einerseits, denke ich, solltest du dich mit C++ Grundlagen befassen.</p>
<p>Hier nur ein paar Hinweise dazu:</p>
<ul>
<li><code>Element::init(..)</code> darf es nicht geben, das gehört in den Konstructor</li>
<li><code>delete</code> und <code>delete[]</code> ist gültig für <code>0</code> / <code>nullptr</code> , d.h. vorher auf <code>0</code> / <code>nullptr</code> zu prüfen ist nicht nötig (und schlechter Stil)<br />
- Fehlendes <code>delete</code> zu <code>e</code><br />
- Generell RAII benutzen<br />
-- <code>std::ofstream</code><br />
-- <code>std::ifstream</code><br />
-- Anstelle <code>unsigned char*</code> / <code>new[]</code> / <code>delete[]</code> einfach <code>std::vector&lt;unsigned char&gt;</code> verwenden (Boost.Serialization kann <code>std::vector&lt;..&gt;</code> serialisieren)<br />
- ...</li>
</ul>
<p>Aber zu deinem konkreten Problem:</p>
<p>Norbert987 schrieb:</p>
<blockquote>
<p>So kann ich in der Main in Zeile 19 und 29</p>
<pre><code>Element *e = new Element;
</code></pre>
<p>schreiben, allerdings verfehlt das den Grund der Ableitung. Dann funktioniert das Speichern, aber beim Laden kommt folgender Fehler:</p>
</blockquote>
<p>Ich verstehe zwar nicht ganz was du damit sagen möchtest, aber in Zeile 26 (Main.cpp) darfst du natürlich kein neues Objekt erzeugen, das macht dann Boost.Serialization für dich.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /></p>
<pre><code>VirtElement *e_new = nullptr; // falls dein Compiler kein C++11 unterstützt, einfach 0
std::cout &lt;&lt; &quot;loading data&quot; &lt;&lt; std::endl;
std::ifstream ifs(&quot;/home/tobias/workspace/boost_test/test.dat&quot;);
boost::archive::text_iarchive ia(ifs);
ia &gt;&gt; e_new;
ofs.close();
std::cout &lt;&lt; &quot;data loaded&quot; &lt;&lt; std::endl;

e_new-&gt;printData();

delete e_new;
</code></pre>
<p>Obs nun besser läuft bezweifle ich allerdings...</p>
<p>Ich würde dir empfehlen, zuerst alle Member-Variablen aus <code>VirtElement</code> und <code>Element</code> herauszunehmen, und nach und nach wieder einzubauen. Ich würde sogar gerade auf <code>std::vector&lt;unsigned char&gt;</code> umstellen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2439783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2439783</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Mon, 26 Jan 2015 09:45:08 GMT</pubDate></item><item><title><![CDATA[Reply to Wie serialisieren mittels boost? on Tue, 27 Jan 2015 23:01:28 GMT]]></title><description><![CDATA[<p>Vielen Dank für deine Geduld! Ich habe die arrays in vectoren geändert und nun läufts endlich, tausend Dank <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/2440109</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2440109</guid><dc:creator><![CDATA[Norbert987]]></dc:creator><pubDate>Tue, 27 Jan 2015 23:01:28 GMT</pubDate></item></channel></rss>