<?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 Arrayinhalt in Klasse&#x2F;Struktur kopieren?]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Klasse, die aus einem Flashspeicher einzelne Bytes ausliest. Diese Bytes sollen letztendlich direkt in eine Klasse geschrieben werden.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">class A {
public:
    int m_a;
};

class B : public A {
public:

    char c;
    int b;
};
</code></pre>
<p>Per sizeof kann ich jetzt erfahren, wie groß B in Bytes ist. Einzelne Bytes kann ich wie geschrieben nacheinander auslesen.</p>
<p>Wie schiebe ich nun die Informationen am elegantesten in B rein? Könnte ich z.B. die Bytes in einem Array zwischenspeichern</p>
<pre><code>BYTE arr[3]
</code></pre>
<p>und dann mit memcpy arbeiten?</p>
<pre><code>memcpy ( myB, arr, sizeof(B) );
</code></pre>
<p>Gibt es eine alternative Lösung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/311240/wie-arrayinhalt-in-klasse-struktur-kopieren</link><generator>RSS for Node</generator><lastBuildDate>Mon, 03 Aug 2026 16:43:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/311240.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 30 Nov 2012 13:08:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie Arrayinhalt in Klasse&#x2F;Struktur kopieren? on Fri, 30 Nov 2012 13:08:44 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich habe eine Klasse, die aus einem Flashspeicher einzelne Bytes ausliest. Diese Bytes sollen letztendlich direkt in eine Klasse geschrieben werden.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">class A {
public:
    int m_a;
};

class B : public A {
public:

    char c;
    int b;
};
</code></pre>
<p>Per sizeof kann ich jetzt erfahren, wie groß B in Bytes ist. Einzelne Bytes kann ich wie geschrieben nacheinander auslesen.</p>
<p>Wie schiebe ich nun die Informationen am elegantesten in B rein? Könnte ich z.B. die Bytes in einem Array zwischenspeichern</p>
<pre><code>BYTE arr[3]
</code></pre>
<p>und dann mit memcpy arbeiten?</p>
<pre><code>memcpy ( myB, arr, sizeof(B) );
</code></pre>
<p>Gibt es eine alternative Lösung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276077</guid><dc:creator><![CDATA[ArrayIndex]]></dc:creator><pubDate>Fri, 30 Nov 2012 13:08:44 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Arrayinhalt in Klasse&#x2F;Struktur kopieren? on Fri, 30 Nov 2012 13:18:44 GMT]]></title><description><![CDATA[<p>Es ist nicht ganz klar, was Du vorhast. Was steht den genau in dem Flashspeicher drin?<br />
Ist es ein binäres Abbild eines Objekts der Klasse B oder gibt es da ein bestimmtes Format?</p>
<p>Konkreter gefragt - welche Bedeutung hat ein Byte im Flashspeicher an der Position '<em>idx</em>'?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276083</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 30 Nov 2012 13:18:44 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Arrayinhalt in Klasse&#x2F;Struktur kopieren? on Fri, 30 Nov 2012 13:20:27 GMT]]></title><description><![CDATA[<p>ArrayIndex schrieb:</p>
<blockquote>
<p>Hallo!</p>
<p>Ich habe eine Klasse, die aus einem Flashspeicher einzelne Bytes ausliest. Diese Bytes sollen letztendlich direkt in eine Klasse geschrieben werden.</p>
</blockquote>
<p>Beschreib genau, was du möchtest. &quot;Reinschreiben&quot; kann vieles bedeuten. Beschreib am besten dein Ziel, nicht wie du dir die Lösung vorstellst.</p>
<blockquote>
<p>und dann mit memcpy arbeiten?</p>
<pre><code>memcpy ( myB, arr, sizeof(B) );
</code></pre>
</blockquote>
<p>Das fällt sicherlich unter eine mögliche Definition von &quot;reinschreiben&quot;. Dennoch werde ich den Verdacht nicht los, dass dies nicht das tut, was du eigentlich erwartest. Welche Werte sollen B::m_a, B::c und B::b hinterher haben? Spielt das überhaupt eine Rolle?</p>
<blockquote>
<p>Gibt es eine alternative Lösung <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> ?</p>
</blockquote>
<p>Siehe oben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276084</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 30 Nov 2012 13:20:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Arrayinhalt in Klasse&#x2F;Struktur kopieren? on Fri, 30 Nov 2012 13:25:27 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Es ist nicht ganz klar, was Du vorhast. Was steht den genau in dem Flashspeicher drin?<br />
Ist es ein binäres Abbild eines Objekts der Klasse B oder gibt es da ein bestimmtes Format?</p>
<p>Konkreter gefragt - welche Bedeutung hat ein Byte im Flashspeicher an der Position '<em>idx</em>'?</p>
</blockquote>
<p>Im Flash liegt ein binäres Abbild eines Objekts der Klasse B, dass ich wieder auslesen möchte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276086</guid><dc:creator><![CDATA[ArrayIndex]]></dc:creator><pubDate>Fri, 30 Nov 2012 13:25:27 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Arrayinhalt in Klasse&#x2F;Struktur kopieren? on Fri, 30 Nov 2012 13:31:40 GMT]]></title><description><![CDATA[<p>Ok - angenommen Du weißt, dass das Objekt b der Klasse B ab 'myB' im Speicher liegt.<br />
Dann könntest Du auch schlicht schreiben:</p>
<pre><code>const unsigned char* myB = position_im_Flashspeicher;
    B neues_B = *reinterpret_cast&lt; const B* &gt;( myB );
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276087</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 30 Nov 2012 13:31:40 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Arrayinhalt in Klasse&#x2F;Struktur kopieren? on Fri, 30 Nov 2012 14:38:09 GMT]]></title><description><![CDATA[<p>Werner Salomon schrieb:</p>
<blockquote>
<p>Ok - angenommen Du weißt, dass das Objekt b der Klasse B ab 'myB' im Speicher liegt.<br />
Dann könntest Du auch schlicht schreiben:<br />
C++:<br />
const unsigned char* myB = position_im_Flashspeicher;<br />
B neues_B = *reinterpret_cast&lt; const B* &gt;( myB );</p>
</blockquote>
<p>Das ist eine Möglichkeit, die aber nur dann funktioniert, wenn Du a) direkt an den Speicher rankommst, der b) linear addressierbar ist und c) keine virtuellen Funktionen in der Klasse genutzt werden, die, einmal persistiert, den vtbl Pointer mit hoher Wahrscheinlichkeit ungültig werden lassen.</p>
<p>Dennoch: Wenn obige Bedingungen erfüllt sind, ist das ein guter Ansatz. Ansonsten, kannst Du einen Konstruktor schreiben, der jeweils die Daten aus einem Array, dass Du ggf. vorher aus dem Flash füllst, übergeben bekommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276116</guid><dc:creator><![CDATA[vtbl]]></dc:creator><pubDate>Fri, 30 Nov 2012 14:38:09 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Arrayinhalt in Klasse&#x2F;Struktur kopieren? on Fri, 30 Nov 2012 15:37:32 GMT]]></title><description><![CDATA[<p>Also bei den Beschreibungen kräusseln sich einem schon die Fingernägel bisserl ^^</p>
<blockquote>
<p>Im Flash liegt ein binäres Abbild eines Objekts der Klasse B</p>
</blockquote>
<p>Wie wird die in den Speicher serialisiert ?<br />
Wer tut das?<br />
Hasst du Bibs womit Du eine äquivalent der Klasse aus einem Datenstrom wieder desectieren kannst ?<br />
Hasst du eine Binäre &quot;Beschreibung&quot;, wo was und wie abgelegt wird ?</p>
<p>Wenn du alle diese Fragen mit &quot;Nein&quot; oder Schulterzucken beantworten kannst / musst, solltest Du lieber die Hände davon lassen ...</p>
<blockquote>
<p>Das ist eine Möglichkeit, die aber nur dann funktioniert, wenn Du a) direkt an den Speicher rankommst, der b) linear addressierbar ist und c) keine virtuellen Funktionen in der Klasse genutzt werden, die, einmal persistiert, den vtbl Pointer mit hoher Wahrscheinlichkeit ungültig werden lassen.</p>
</blockquote>
<p>Solange Du nicht weisst, wo die Daten herkommen, kannst du nich mal davon ausgehen das du Binaerkompatible Datentypen hasst ^^</p>
<p>Was ist wenn das wer aus python oder C# oder so ne MFC-Serialization / boost-Serialize ist ?<br />
Da fehlen viel zu viele Infos um da ueberhaupt annahmen machen zu können !</p>
<p>Ciao ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276125</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276125</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Fri, 30 Nov 2012 15:37:32 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Arrayinhalt in Klasse&#x2F;Struktur kopieren? on Fri, 30 Nov 2012 15:37:51 GMT]]></title><description><![CDATA[<blockquote>
<p>Bibs</p>
</blockquote>
<p>Ich dachte zuerst an Biber, klasse <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="😃"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276126</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Fri, 30 Nov 2012 15:37:51 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Arrayinhalt in Klasse&#x2F;Struktur kopieren? on Fri, 30 Nov 2012 15:41:57 GMT]]></title><description><![CDATA[<p>Libs waere doch zu langweilig <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2276127</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276127</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Fri, 30 Nov 2012 15:41:57 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Arrayinhalt in Klasse&#x2F;Struktur kopieren? on Fri, 30 Nov 2012 15:43:20 GMT]]></title><description><![CDATA[<p>@vtbl: Punkt a) und b) habe ich implizit als selbstverständlich vorausgesetzt. Sonst geht auch <code>memcpy</code> nicht.</p>
<p>Zu Punkt c.) - genau das ist der Vorteil der Zuweisung gegenüber dem <code>memcpy</code> . Die <a href="http://de.wikipedia.org/wiki/Tabelle_virtueller_Methoden" rel="nofollow">vtbl</a> des Objekts im Flashmemory kann ja bereits vor dem Kopieren ungültig sein. Mit einem <code>memcpy</code> zerstört man demzufolge auch eine vtbl des Ziels.<br />
Genau das passiert bei der Zuweisung nicht.<br />
Es versteht sich weiter von selbst, dass im Objekt B keine Zeiger oder Objekte mit Zeigern (std::string) vorhanden sein dürfen.<br />
Viel wichtiger in diesem Zusammenhang ist, dass das schreibenden und das lesende Programm mit dem gleichem Compiler mit identischen Optionen übersetzt worden ist. Ansonsten kann es sein, dass B != B ist.</p>
<p>Ich behaupte mal, dass das in der Praxis auch mit Klassen mit virtuellen Methoden funktioniert. Es darf nur keine Methode des Objekts im Flashmemory ausgerufen werden - auch und gerade nicht im Zuweisungsoperator.</p>
<p>Anbei ein Programmschnipsel zu Spielen:</p>
<pre><code>#include &lt;iostream&gt;

class A
{
public:
    explicit A( double a ) : m_a( a ) {}
    virtual ~A() =0;
    virtual int egal() =0;
protected:
    double m_a;
};
inline A::~A() {}

class B : public A
{
public:
    B( double a, int i )
        : A( a )
        , int_( i )
    {}
    virtual int egal()
    {
        std::cout &lt;&lt; &quot;B(&quot; &lt;&lt; m_a &lt;&lt; &quot;)&quot; &lt;&lt; std::endl;
        return int(int_);
    }
private:
    int int_;
};

int main()
{
    using namespace std;
    unsigned char flashmemory[200];
    {
        const B b( 1.23456, 7);
        memcpy( flashmemory, &amp;b, sizeof(b) );
    }
    A* a = new B( *reinterpret_cast&lt; const B* &gt;( flashmemory ) );
    const int i = a-&gt;egal();
    cout &lt;&lt; i &lt;&lt; endl;
    delete a;

    return 0;
}
</code></pre>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276129</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Fri, 30 Nov 2012 15:43:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Arrayinhalt in Klasse&#x2F;Struktur kopieren? on Fri, 30 Nov 2012 16:47:07 GMT]]></title><description><![CDATA[<p>RHBaum schrieb:</p>
<blockquote>
<p>Also bei den Beschreibungen kräusseln sich einem schon die Fingernägel bisserl ^^</p>
<blockquote>
<p>Im Flash liegt ein binäres Abbild eines Objekts der Klasse B</p>
</blockquote>
<p>Wie wird die in den Speicher serialisiert ?<br />
Wer tut das?<br />
Hasst du Bibs womit Du eine äquivalent der Klasse aus einem Datenstrom wieder desectieren kannst ?<br />
Hasst du eine Binäre &quot;Beschreibung&quot;, wo was und wie abgelegt wird ?</p>
<p>Wenn du alle diese Fragen mit &quot;Nein&quot; oder Schulterzucken beantworten kannst / musst, solltest Du lieber die Hände davon lassen ...</p>
<blockquote>
<p>Das ist eine Möglichkeit, die aber nur dann funktioniert, wenn Du a) direkt an den Speicher rankommst, der b) linear addressierbar ist und c) keine virtuellen Funktionen in der Klasse genutzt werden, die, einmal persistiert, den vtbl Pointer mit hoher Wahrscheinlichkeit ungültig werden lassen.</p>
</blockquote>
<p>Solange Du nicht weisst, wo die Daten herkommen, kannst du nich mal davon ausgehen das du Binaerkompatible Datentypen hasst ^^</p>
<p>Was ist wenn das wer aus python oder C# oder so ne MFC-Serialization / boost-Serialize ist ?<br />
Da fehlen viel zu viele Infos um da ueberhaupt annahmen machen zu können !</p>
<p>Ciao ...</p>
</blockquote>
<p>So ein Unfug. Echt mal. Hier waren eine Menge sinnvolle Antworten im Thread, deine gehört NICHT dazu. Aus Gründen der Einfachheit habe ich angegeben was wichtig ist. Und wenn ich schreibe das ein Objekt bzw. das Binäre Abbildung davon im Flash liegt, dann liegt es da. Warum und wieso ist für die Frage total unerheblich.</p>
<p>Man kann aus einer einfachen Frage auch ein Riesenproblem machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276154</guid><dc:creator><![CDATA[ArrayIndex]]></dc:creator><pubDate>Fri, 30 Nov 2012 16:47:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Arrayinhalt in Klasse&#x2F;Struktur kopieren? on Fri, 30 Nov 2012 16:57:10 GMT]]></title><description><![CDATA[<p>ArrayIndex schrieb:</p>
<blockquote>
<p>So ein Unfug. Echt mal. Hier waren eine Menge sinnvolle Antworten im Thread, deine gehört NICHT dazu. Aus Gründen der Einfachheit habe ich angegeben was wichtig ist. Und wenn ich schreibe das ein Objekt bzw. das Binäre Abbildung davon im Flash liegt, dann liegt es da. Warum und wieso ist für die Frage total unerheblich.</p>
</blockquote>
<p>Als langfristiger Leser weiß RHBaum, dass die von dir gezeigte Vorgehensweise auch die typische Art und Weise ist, wie Leute ohne Ahnung Klassen serialisieren, die man nicht so serialisieren kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276161</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 30 Nov 2012 16:57:10 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Arrayinhalt in Klasse&#x2F;Struktur kopieren? on Fri, 30 Nov 2012 17:08:21 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>ArrayIndex schrieb:</p>
<blockquote>
<p>So ein Unfug. Echt mal. Hier waren eine Menge sinnvolle Antworten im Thread, deine gehört NICHT dazu. Aus Gründen der Einfachheit habe ich angegeben was wichtig ist. Und wenn ich schreibe das ein Objekt bzw. das Binäre Abbildung davon im Flash liegt, dann liegt es da. Warum und wieso ist für die Frage total unerheblich.</p>
</blockquote>
<p>Als langfristiger Leser weiß RHBaum, dass die von dir gezeigte Vorgehensweise auch die typische Art und Weise ist, wie Leute ohne Ahnung Klassen serialisieren, die man nicht so serialisieren kann.</p>
</blockquote>
<p>Dann nehme ich meine Kritik zurück <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276169</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276169</guid><dc:creator><![CDATA[ArrayIndex]]></dc:creator><pubDate>Fri, 30 Nov 2012 17:08:21 GMT</pubDate></item><item><title><![CDATA[Reply to Wie Arrayinhalt in Klasse&#x2F;Struktur kopieren? on Mon, 03 Dec 2012 17:26:54 GMT]]></title><description><![CDATA[<blockquote>
<p>Und wenn ich schreibe das ein Objekt bzw. das Binäre Abbildung davon im Flash liegt, dann liegt es da. Warum und wieso ist für die Frage total unerheblich.</p>
</blockquote>
<p>Da du die Form als unerheblich betrachtest, kann man eigentlich nur davon ausgehen, dass du lesen und schreiben gleichermassen in der Hand hasst, also Dein Code ist ... richtig ?</p>
<p>Dann wuerd ich Dir sowieso empfehlen, ein (binaer) Serialize Framework zu verwenden ....<br />
z.b. boost::serialize</p>
<p>Falls du es unbedingt von Hand selber machen willst, wegens dem lerneffekt, dann macht man das &quot;üblicherweisse&quot; mit binaerstreams !</p>
<pre><code>std::ifstream infile(&quot;C:\\myfile.bin&quot;,ios::in | ios::binary);
if(in.is_open())
{
    int value;
    infile &gt;&gt; value; /// sollte nun den serialisierten Wert haben
}
</code></pre>
<p>wegschreiben dann entsprechend mit ofstream und dem &lt;&lt; operator</p>
<p>Leider gibts noch kein fertigen &lt;&lt; &gt;&gt; operator für stl container (ausser std::string, aber der iss bissi tricky für binaere streams).</p>
<p>Aber wenn alle Elemente den &gt;&gt; und &lt;&lt; operator implementieren ist das selber zu bauen wiederum trivial. Mann muss nur zuerst die Groesse wegspeichern ...<br />
Danach jedes einzelnhe element ...<br />
Bein einlesen andersrum ... groesse lesen, schleife 0 ... n-1, Object konstruieren, aus dem stream lesen lassen, in den container einfuegen ...</p>
<p>Wenn Performance nen Problem, und mann Massen Daten an POD's hat, kann man natürlich den Operator fuer speziell den std::vector&lt;PODTyp&gt; so überladen, das er memcpy nimmt!</p>
<p>Vioala, fertig</p>
<p>bei klassen sieht es besonders c++ like aus, wenn man den &gt;&gt; &lt;&lt; operator fuer die klasse überlaed.</p>
<p>Hirariche Klassenstrukturen sind etwas komplexer, gehen aber auch so ....</p>
<p>Kommt noch Virtualitaet hinzu, wirds noch ne nummer komplizierter. Da werden dann &quot;class factories&quot; bzw. &quot;factory methods&quot; schnell Pflicht.</p>
<p>Ciao ....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2276852</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2276852</guid><dc:creator><![CDATA[RHBaum]]></dc:creator><pubDate>Mon, 03 Dec 2012 17:26:54 GMT</pubDate></item></channel></rss>