<?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[auto_ptr verstaendnis problem]]></title><description><![CDATA[<p>heiho</p>
<p>also</p>
<p>ich hab eine klasse mit nem auto_ptr darin</p>
<pre><code class="language-cpp">class AA
{
    std::auto_ptr&lt;BB&gt; BBclass;
};
</code></pre>
<p>diese will ich in einer funktion ein wert zuweisen, da weiss ich nicht ob das so ueberhaupt zulaessig ist</p>
<pre><code class="language-cpp">void AA::blub()
{
    BBclass = std::auto_ptr&lt;BB&gt;(new BB);
    BBclass-&gt;DoSomething();
}
</code></pre>
<p>BBclass soll die ganze zeit verfuegbar sein bis ich BBclass.release() aufruf oder das programm beendet<br />
anders weiss ich keine methode wie ich speicher zuweisen kann, alle versuche wurden mit errors quittiert<br />
(kann keine zeigen im moment)<br />
es funktioniert so, aber ich vermute so langsam das es &quot;durch zufall&quot; funktioniert da der speicher noch nicht ueberschrieben wurde</p>
<p>macht man das so ?</p>
<p>(hab seit heute auch boost am laufen, moechte aber erstma auto_ptr verstehen bevor ich andere benutz)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/195329/auto_ptr-verstaendnis-problem</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 23:20:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/195329.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 16 Oct 2007 15:44:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to auto_ptr verstaendnis problem on Tue, 16 Oct 2007 15:47:22 GMT]]></title><description><![CDATA[<p>heiho</p>
<p>also</p>
<p>ich hab eine klasse mit nem auto_ptr darin</p>
<pre><code class="language-cpp">class AA
{
    std::auto_ptr&lt;BB&gt; BBclass;
};
</code></pre>
<p>diese will ich in einer funktion ein wert zuweisen, da weiss ich nicht ob das so ueberhaupt zulaessig ist</p>
<pre><code class="language-cpp">void AA::blub()
{
    BBclass = std::auto_ptr&lt;BB&gt;(new BB);
    BBclass-&gt;DoSomething();
}
</code></pre>
<p>BBclass soll die ganze zeit verfuegbar sein bis ich BBclass.release() aufruf oder das programm beendet<br />
anders weiss ich keine methode wie ich speicher zuweisen kann, alle versuche wurden mit errors quittiert<br />
(kann keine zeigen im moment)<br />
es funktioniert so, aber ich vermute so langsam das es &quot;durch zufall&quot; funktioniert da der speicher noch nicht ueberschrieben wurde</p>
<p>macht man das so ?</p>
<p>(hab seit heute auch boost am laufen, moechte aber erstma auto_ptr verstehen bevor ich andere benutz)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386518</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Tue, 16 Oct 2007 15:47:22 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr verstaendnis problem on Tue, 16 Oct 2007 15:52:11 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>warum verwendest Du überhaupt auto_ptr ?<br />
Geht doch auch &quot;normal&quot; (BTW: release() sollte eine Funktion von AA sein) :</p>
<pre><code class="language-cpp">class AA {
    BB* BBclass;
public:
   AA() : BBclass(0) {}
   void blub() {
      if(!BBclass) BBclass = new BB;
      BBclass-&gt;DoSomething();
   }
   releaseBBclass() { delete BBclass; }
   ~AA() { releaseBBclass(); }
};
</code></pre>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386527</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 16 Oct 2007 15:52:11 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr verstaendnis problem on Tue, 16 Oct 2007 15:55:48 GMT]]></title><description><![CDATA[<p>Mr Evil schrieb:</p>
<blockquote>
<p>BBclass soll die ganze zeit verfuegbar sein bis ich BBclass.release() aufruf oder das programm beendet</p>
</blockquote>
<p>Jede Veränderung eines auto_ptr (außer release und swap) führt dazu, dass das Objekt, auf das zuvor verwiesen wurde, gelöscht wird.</p>
<pre><code class="language-cpp">BBclass.reset(new BB);
BBclass = std::auto_ptr&lt;BB&gt;(new BB);
BBclass.reset(std::auto_ptr&lt;BB&gt;(new BB).release());
</code></pre>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13624">@Simon2</a>: auto_ptr hat keinen operator! ( !p.get() ist die Lösung) und der Konstruktor, der rohe Pointer nimmt, ist explicit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386528</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386528</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 16 Oct 2007 15:55:48 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr verstaendnis problem on Tue, 16 Oct 2007 16:16:49 GMT]]></title><description><![CDATA[<p>mit new und delete hatte ich es bisher, nur es gibt zu viele ausstiegsmoeglichkeiten, sei es gewollt oder ungewollt<br />
auf jeden fall wollte ich einen intelligenten zeiger welcher sich selber um die bereinigung kuemmert (die zerstoerung finden dynamisch zur laufzeit statt, der user bestimmt, destruktor reicht nicht)</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/6642">@camper</a><br />
eine zuweisung findet nur einmal statt, amsonsten nur zerstoerung oder eine neue generierung nach voran gegangener zerstoerung<br />
so wie ich deinen code verstehe machs ichs ja bisher schon richtig</p>
<p>member in klasse<br />
std::auto_ptr&lt;BB&gt; bbclass;</p>
<p>eine erstellung sobald gewuenscht<br />
BBclass = std::auto_ptr&lt;BB&gt;(new BB);</p>
<p>zerstoerung wenn gewuenscht<br />
BBclass.release();</p>
<p>erneute erzeugung sobald gewuenscht<br />
BBclass = std::auto_ptr&lt;BB&gt;(new BB);<br />
.<br />
.<br />
.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386552</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Tue, 16 Oct 2007 16:16:49 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr verstaendnis problem on Tue, 16 Oct 2007 16:18:22 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">BBclass.release();
</code></pre>
<p>leert den Pointer, zerstört aber nicht das Objekt. für die Zerstörung ist reset da:</p>
<pre><code class="language-cpp">BBclass.reset();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1386553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386553</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 16 Oct 2007 16:18:22 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr verstaendnis problem on Tue, 16 Oct 2007 16:23:39 GMT]]></title><description><![CDATA[<p>ja meinte ich ja, schreibe den ganzen beitrag ausn kopf, hab grad den code nicht zur verfuegung,<br />
wollte nur schnell gewissheit bevor ich morgen mit bloedsinn weitermach</p>
<p>danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386554</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Tue, 16 Oct 2007 16:23:39 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr verstaendnis problem on Wed, 17 Oct 2007 05:56:28 GMT]]></title><description><![CDATA[<p>Mr Evil schrieb:</p>
<blockquote>
<p>mit new und delete hatte ich es bisher, nur es gibt zu viele ausstiegsmoeglichkeiten, sei es gewollt oder ungewollt<br />
auf jeden fall wollte ich einen intelligenten zeiger welcher sich selber um die bereinigung kuemmert (die zerstoerung finden dynamisch zur laufzeit statt, der user bestimmt, destruktor reicht nicht)</p>
</blockquote>
<p>Dafür gibt es doch die Destruktoren - egal auf welchem Weg<sup>*</sup> der Scope des Objekts verlassen wird, der Compiler ruft auch seinen Destruktor auf (und der sollte sich im Ernstfall um die Bereinigung kümmern).<br />
(aber denk dabei an die &quot;Rule of Three&quot; - du benötigst idR entweder Copy-Ctor, operator= <strong>UND</strong> Dtor oder gar keine dieser Methoden)</p>
<p><sup>*</sup> nur bei setjmp()/longjmp() bin ich mir nicht sicher - aber welcher [i]vernünftige C++ Programmierer verwendet das schon?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386818</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 17 Oct 2007 05:56:28 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr verstaendnis problem on Wed, 17 Oct 2007 06:18:41 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>(aber denk dabei an die &quot;Rule of Three&quot; - du benötigst idR entweder Copy-Ctor, operator= <strong>UND</strong> Dtor oder gar keine dieser Methoden)</p>
</blockquote>
<p>Gerade die kann man sich doch sparen wenn man einen passenden Smartpointer benutzt (ok, für auto_ptr sollte die Klasse wenigstens unkopierbar sein). Ich denke um nichts anderes geht es Mr Evil hier, oder?</p>
<p>Ich benutze übrigens regelmäßig Scoped oder Shared Pointer in Klassen, weil ich keine Lust habe einen Destruktor zu implementieren, der sie löscht <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/1386826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386826</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 17 Oct 2007 06:18:41 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr verstaendnis problem on Wed, 17 Oct 2007 08:14:09 GMT]]></title><description><![CDATA[<p>auto_ptr ist eh im nächsten C++Standard deprecated.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386905</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386905</guid><dc:creator><![CDATA[Artchi]]></dc:creator><pubDate>Wed, 17 Oct 2007 08:14:09 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr verstaendnis problem on Wed, 17 Oct 2007 08:20:15 GMT]]></title><description><![CDATA[<p>genau</p>
<p>ich hab es ja wie bereits erwaehnt bisher alles mit nem standard new und delete implementiert,<br />
aber ich hab zZt keine lust mich um die bereinigung gedanken machen zu muessen<br />
auto_ptr war der erste ansatz, da es halt bereits im standard ist<br />
als naechstes denk ich benutz ich die smart pointer von boost</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386912</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386912</guid><dc:creator><![CDATA[EXDW]]></dc:creator><pubDate>Wed, 17 Oct 2007 08:20:15 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr verstaendnis problem on Wed, 17 Oct 2007 08:50:43 GMT]]></title><description><![CDATA[<p>Mr Evil schrieb:</p>
<blockquote>
<p>...<br />
aber ich hab zZt keine lust mich um die bereinigung gedanken machen zu muessen...</p>
</blockquote>
<p>Das würde ich aber in jeden Fall tun. Auch ohne &quot;new/delete&quot; spielt es schon eine wesentliche Rolle, wem ein Objekt denn eigentlich &quot;gehört&quot;. Denn auch nur der sollte idealerweise am Objekt &quot;rumändern&quot;.<br />
Es gibt zwar auch das Konzept: Jeder, der einen Pointer auf das Objekt in der Hand hat, kann damit machen, was er will&quot;, aber das führt schnell ins Chaos.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1386928</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1386928</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 17 Oct 2007 08:50:43 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr verstaendnis problem on Wed, 17 Oct 2007 17:12:53 GMT]]></title><description><![CDATA[<p>Artchi schrieb:</p>
<blockquote>
<p>auto_ptr ist eh im nächsten C++Standard deprecated.</p>
</blockquote>
<p>Was soll man dan verwenden?<br />
Den boost::scoped_ptr?</p>
<p>Gruß,<br />
*Cpp-Anfänger*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387354</guid><dc:creator><![CDATA[*Cpp-Anfänger* (off)]]></dc:creator><pubDate>Wed, 17 Oct 2007 17:12:53 GMT</pubDate></item><item><title><![CDATA[Reply to auto_ptr verstaendnis problem on Wed, 17 Oct 2007 17:15:29 GMT]]></title><description><![CDATA[<p>Aber der ist ja Noncopyable...</p>
<p>Nur noch shared_ptr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1387356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1387356</guid><dc:creator><![CDATA[*Cpp-Anfänger* (off)]]></dc:creator><pubDate>Wed, 17 Oct 2007 17:15:29 GMT</pubDate></item></channel></rss>