<?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 und Smart Pointer]]></title><description><![CDATA[<p>Hallo</p>
<p>Wollte mal Fragen, welcher Smart Pointer für die Serialisierung mit Boost besser geeignet ist.<br />
Also folgendes: Ich habe einen boost::ptr_vector, den ich mit pointern füllen will (irgendwie logisch <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="😉"
    /> ) Den möcht ich serialisieren. Ich erzeuge die Objekte aber mit std::auto_ptr oder boost::shared_ptr (eben welches <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="😕"
    /> ).<br />
1. Was passt besser in den ptr_vector<br />
und 2. was lässt sich besser serialisieren<br />
shared_ptr hat wohl mehr overhead, aber ist es eventuell besser kompatibel mit den anderen boost elementen? (Besser im Sinn von weniger Fehlermöglichkeiten, Castings, Wartbarkeit etc.)</p>
<p>Danke im Voraus <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/topic/155309/boost-serialization-und-smart-pointer</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 09:34:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/155309.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Aug 2006 15:33:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Boost] Serialization und Smart Pointer on Fri, 04 Aug 2006 15:33:23 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Wollte mal Fragen, welcher Smart Pointer für die Serialisierung mit Boost besser geeignet ist.<br />
Also folgendes: Ich habe einen boost::ptr_vector, den ich mit pointern füllen will (irgendwie logisch <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="😉"
    /> ) Den möcht ich serialisieren. Ich erzeuge die Objekte aber mit std::auto_ptr oder boost::shared_ptr (eben welches <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="😕"
    /> ).<br />
1. Was passt besser in den ptr_vector<br />
und 2. was lässt sich besser serialisieren<br />
shared_ptr hat wohl mehr overhead, aber ist es eventuell besser kompatibel mit den anderen boost elementen? (Besser im Sinn von weniger Fehlermöglichkeiten, Castings, Wartbarkeit etc.)</p>
<p>Danke im Voraus <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/1110648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110648</guid><dc:creator><![CDATA[Turbo Booster]]></dc:creator><pubDate>Fri, 04 Aug 2006 15:33:23 GMT</pubDate></item><item><title><![CDATA[Reply to [Boost] Serialization und Smart Pointer on Fri, 04 Aug 2006 15:53:41 GMT]]></title><description><![CDATA[<p>1.) Rohe Zeiger</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110660</guid><dc:creator><![CDATA[11]]></dc:creator><pubDate>Fri, 04 Aug 2006 15:53:41 GMT</pubDate></item><item><title><![CDATA[Reply to [Boost] Serialization und Smart Pointer on Fri, 04 Aug 2006 15:55:44 GMT]]></title><description><![CDATA[<p>11 schrieb:</p>
<blockquote>
<p>1.) Rohe Zeiger</p>
</blockquote>
<p>iih <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110662</guid><dc:creator><![CDATA[Turbo Booster]]></dc:creator><pubDate>Fri, 04 Aug 2006 15:55:44 GMT</pubDate></item><item><title><![CDATA[Reply to [Boost] Serialization und Smart Pointer on Fri, 04 Aug 2006 17:13:46 GMT]]></title><description><![CDATA[<p>Gibts keinen Container für auto_ptr/shared_ptr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110713</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110713</guid><dc:creator><![CDATA[Turbo Booster]]></dc:creator><pubDate>Fri, 04 Aug 2006 17:13:46 GMT</pubDate></item><item><title><![CDATA[Reply to [Boost] Serialization und Smart Pointer on Fri, 04 Aug 2006 19:01:34 GMT]]></title><description><![CDATA[<p>Turbo Booster schrieb:</p>
<blockquote>
<p>11 schrieb:</p>
<blockquote>
<p>1.) Rohe Zeiger</p>
</blockquote>
<p>iih <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
</blockquote>
<p>dann hast du wohl den sinn von ptr_vector nicht verstanden</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110770</guid><dc:creator><![CDATA[11]]></dc:creator><pubDate>Fri, 04 Aug 2006 19:01:34 GMT</pubDate></item><item><title><![CDATA[Reply to [Boost] Serialization und Smart Pointer on Fri, 04 Aug 2006 19:10:30 GMT]]></title><description><![CDATA[<p>Vielen Dank.<br />
Das hat mir sehr geholfen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110772</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110772</guid><dc:creator><![CDATA[Turbo Buuster]]></dc:creator><pubDate>Fri, 04 Aug 2006 19:10:30 GMT</pubDate></item><item><title><![CDATA[Reply to [Boost] Serialization und Smart Pointer on Fri, 04 Aug 2006 19:52:34 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>auto_ptr geht nicht in Container rein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110798</guid><dc:creator><![CDATA[chrische6]]></dc:creator><pubDate>Fri, 04 Aug 2006 19:52:34 GMT</pubDate></item><item><title><![CDATA[Reply to [Boost] Serialization und Smart Pointer on Fri, 04 Aug 2006 20:11:59 GMT]]></title><description><![CDATA[<p>Stell ich zu blöde Fragen oder seid ihr alle so wortkarg?</p>
<p>Also, ich habe eine Funktion, die mir einen Zeiger auf ein innerhalb der Funktion mit new erzeugtes Objekt zurückgibt. (Ist ne Factory Methode) Da dies unschön ist, weil das delete dann dem Aufrufer überlassen ist, wollt ich gern mit nem smarten Pointer arbeiten. (boost oder std) Der zurückgegebene Zeiger soll in einem Container, wahrscheinlich vector, gespeichert werden. Da es sich um polymorphe Objekte handelt, dachte ich an einen ptr_vector, aber offenbar ist dem nicht so.<br />
Bitte, wie mach ich das nun am besten (s.o. für definition von &quot;am besten&quot;)?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110806</guid><dc:creator><![CDATA[Turbo Booster]]></dc:creator><pubDate>Fri, 04 Aug 2006 20:11:59 GMT</pubDate></item><item><title><![CDATA[Reply to [Boost] Serialization und Smart Pointer on Fri, 04 Aug 2006 20:52:20 GMT]]></title><description><![CDATA[<p>Warum PROBIERST du nicht einfach mal was aus? Schreib dir ein kleines Programm und teste ob es so klappt wie du es dir vorstellst. Dann kannst du auch konkrete Fragen mit Codebeispielen stellen.</p>
<p>Das Problem ist, dass du einen boost::shared_ptr nicht einfach in einen ptr_vector hineintuen kannst. Du müsstest die get()-Methode benutzen:</p>
<pre><code class="language-cpp">#include &lt;boost/ptr_container/ptr_vector.hpp&gt;
#include &lt;boost/shared_ptr.hpp&gt;
#include &lt;iostream&gt;

struct Widget
{
    ~Widget()
    {
        std::cout &lt;&lt; &quot;Destruktor&quot; &lt;&lt; std::endl;
    }
};

boost::shared_ptr&lt;Widget&gt; CreateWidget()
{
    return boost::shared_ptr&lt;Widget&gt;(new Widget);
}

int main()
{
    boost::ptr_vector&lt;Widget&gt; v;
    v.push_back(CreateWidget().get());
    std::cout &lt;&lt; &quot;Test&quot; &lt;&lt; std::endl;
}
</code></pre>
<p>Und hierbei wird zweimal der Destruktor von Widget aufgerufen:</p>
<pre><code>Destruktor
Test
Destruktor
*** glibc detected *** double free or corruption (fasttop): 0x0804c008 ***
Aborted
</code></pre>
<p>Bei einigen Sachen, z.B. Factory ist es nicht so wichtig, dass sie einen Smart Pointer zurück gibt. Nimm den ptr_vector und lass deine Funktion einen rohen Zeiger zurück geben. Und das meine &quot;1 1&quot; glaub ich auch.</p>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110823</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Fri, 04 Aug 2006 20:52:20 GMT</pubDate></item><item><title><![CDATA[Reply to [Boost] Serialization und Smart Pointer on Sat, 05 Aug 2006 09:52:03 GMT]]></title><description><![CDATA[<p>Wenn du dir die Doku zu den Pointer Containern durchliest, wirst du feststellen, das diese für rohe Pointer entwickelt wurden. Die Std-Container sind ebend nicht für rohe Pointer geeignet, weshalb die Pointer Container entwickelt wurden. Wenn du unbedingt Smartpointer nutzen willst, dann kannst du die Std-Container nutzen. Übrigens, auto_ptr ist total ungeeignet für Container. Das ist eines DER wichtigsten Merkmale dieses Smartpointers, welches man wissen sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1110932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1110932</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Sat, 05 Aug 2006 09:52:03 GMT</pubDate></item><item><title><![CDATA[Reply to [Boost] Serialization und Smart Pointer on Sat, 05 Aug 2006 17:08:32 GMT]]></title><description><![CDATA[<p>Danke.</p>
<p>Hab nun die Docu gelesen, aber eine Frage bleibt mir noch offen.<br />
Wenn ich den ptr_vector zerstöre, werden dann die Objekte gelöscht?<br />
Muss ich mich gar nicht mehr um das delete kümmern, auch nicht bei remove()?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1111194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1111194</guid><dc:creator><![CDATA[Turbo Booster]]></dc:creator><pubDate>Sat, 05 Aug 2006 17:08:32 GMT</pubDate></item><item><title><![CDATA[Reply to [Boost] Serialization und Smart Pointer on Sat, 05 Aug 2006 17:11:20 GMT]]></title><description><![CDATA[<p>Ach und die eigentliche Frage, warum ich mir das überhaupt überlege:<br />
Ist der ptr_vector serializable, oder muss ich die enthaltenden Objekt-Zeiger einzeln rausschreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1111196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1111196</guid><dc:creator><![CDATA[Turbo Booster]]></dc:creator><pubDate>Sat, 05 Aug 2006 17:11:20 GMT</pubDate></item><item><title><![CDATA[Reply to [Boost] Serialization und Smart Pointer on Sat, 05 Aug 2006 17:43:20 GMT]]></title><description><![CDATA[<p>Turbo Booster schrieb:</p>
<blockquote>
<p>Danke.</p>
<p>Hab nun die Docu gelesen, aber eine Frage bleibt mir noch offen.<br />
Wenn ich den ptr_vector zerstöre, werden dann die Objekte gelöscht?<br />
Muss ich mich gar nicht mehr um das delete kümmern, auch nicht bei remove()?</p>
</blockquote>
<p>Erledigt, die Objekte werden zerstört. (Irgendwie logisch)</p>
<p>Turbo Booster schrieb:</p>
<blockquote>
<p>Ach und die eigentliche Frage, warum ich mir das überhaupt überlege:<br />
Ist der ptr_vector serializable, oder muss ich die enthaltenden Objekt-Zeiger einzeln rausschreiben?</p>
</blockquote>
<p>Wer gut zu wissen, bevor ich alles einbaue..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1111210</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1111210</guid><dc:creator><![CDATA[Turbo Booster]]></dc:creator><pubDate>Sat, 05 Aug 2006 17:43:20 GMT</pubDate></item></channel></rss>