<?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[dtor macht zu viel kaputt, shared_ptr?]]></title><description><![CDATA[<p>Hi,</p>
<p>Das Topic ist nicht sehr gut, tut mir Leid.</p>
<p>Ich habe eine Texturklasse. Im ctor lädt die über eine Datei das Bild. Im dtor wird das Bild wieder zerstört. Dabei nutze ich OpenGL und OpenGL verwaltet die Daten auch, sodass die Texturklasse eigentlich nur eine ID auf die Textur hält sowie ein paar Methoden, welche die Texturfunktionen von OpenGL kapseln, also eine Art Wrapper.</p>
<p>Problem:<br />
Wenn ich diese Texturklasse in einem Container nutze, werden natürlich Kopien erstellt und zerstört (dtor!). Der Copy-ctor überträgt natürlich nur die ID etc. und lädt nicht jedes Mal anhand des Dateinamens neu, also ist das Bild dann weg.</p>
<p>Lösung:<br />
Meine Idee, die auch funktioniert, ist, halt einen Container mit shared_ptr zu nehmen. Eigentlich ist das damit ziemlich einfach gelöst.</p>
<p>Findet ihr das gut oder denkt ihr, ich habe hier einen Designfehler bzw. habt ihr bessere Vorschläge?</p>
<p>Sorry, ich frage gerade jeden Furz nach, aber bin Anfänger und will viel lernen. <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>
<p>Vielen Dank schon Mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/274673/dtor-macht-zu-viel-kaputt-shared_ptr</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 08:45:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/274673.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Sep 2010 13:43:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dtor macht zu viel kaputt, shared_ptr? on Thu, 30 Sep 2010 13:43:45 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Das Topic ist nicht sehr gut, tut mir Leid.</p>
<p>Ich habe eine Texturklasse. Im ctor lädt die über eine Datei das Bild. Im dtor wird das Bild wieder zerstört. Dabei nutze ich OpenGL und OpenGL verwaltet die Daten auch, sodass die Texturklasse eigentlich nur eine ID auf die Textur hält sowie ein paar Methoden, welche die Texturfunktionen von OpenGL kapseln, also eine Art Wrapper.</p>
<p>Problem:<br />
Wenn ich diese Texturklasse in einem Container nutze, werden natürlich Kopien erstellt und zerstört (dtor!). Der Copy-ctor überträgt natürlich nur die ID etc. und lädt nicht jedes Mal anhand des Dateinamens neu, also ist das Bild dann weg.</p>
<p>Lösung:<br />
Meine Idee, die auch funktioniert, ist, halt einen Container mit shared_ptr zu nehmen. Eigentlich ist das damit ziemlich einfach gelöst.</p>
<p>Findet ihr das gut oder denkt ihr, ich habe hier einen Designfehler bzw. habt ihr bessere Vorschläge?</p>
<p>Sorry, ich frage gerade jeden Furz nach, aber bin Anfänger und will viel lernen. <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>
<p>Vielen Dank schon Mal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959574</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959574</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Thu, 30 Sep 2010 13:43:45 GMT</pubDate></item><item><title><![CDATA[Reply to dtor macht zu viel kaputt, shared_ptr? on Thu, 30 Sep 2010 13:45:44 GMT]]></title><description><![CDATA[<p>Das Problem mit dem shared_ptr zu lösen ist gut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959577</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959577</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Thu, 30 Sep 2010 13:45:44 GMT</pubDate></item><item><title><![CDATA[Reply to dtor macht zu viel kaputt, shared_ptr? on Thu, 30 Sep 2010 21:27:09 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<p>Das Problem mit dem shared_ptr zu lösen ist gut.</p>
</blockquote>
<p>Zusätzlich sollte er Copy-Ctor und Zuweisungsoperator &quot;deaktivieren&quot;, dass so ein Objekt nicht versehentlich kopiert werden kann. Er hat im Prinzip die <a href="http://de.wikipedia.org/wiki/Dreierregel_%28C%2B%2B%29" rel="nofollow">Dreierregel</a> verletzt.</p>
<pre><code class="language-cpp">class NichtKopierbar : boost::noncopyable
{
public:
  explicit NichtKopierbar(blah);
  ~NichtKopierbar(blah);
  ...
};
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">class NichtKopierbar
{
private:
  // werden absichtlich privat deklariert und NICHT definiert:
  NichtKopierbar(NichtKopierbar const&amp;);
  NichtKopierbar&amp; operator=(NichtKopierbar const&amp;);
public:
  explicit NichtKopierbar(blah);
  ~NichtKopierbar(blah);
  ...
};
</code></pre>
<p>kk</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959685</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 30 Sep 2010 21:27:09 GMT</pubDate></item><item><title><![CDATA[Reply to dtor macht zu viel kaputt, shared_ptr? on Thu, 30 Sep 2010 20:02:36 GMT]]></title><description><![CDATA[<p>Du musst die Affinity der Tokens beachten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959746</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959746</guid><dc:creator><![CDATA[fropp]]></dc:creator><pubDate>Thu, 30 Sep 2010 20:02:36 GMT</pubDate></item><item><title><![CDATA[Reply to dtor macht zu viel kaputt, shared_ptr? on Thu, 30 Sep 2010 22:34:42 GMT]]></title><description><![CDATA[<p>Eisflamme schrieb:</p>
<blockquote>
<p>Lösung:<br />
Meine Idee, die auch funktioniert, ist, halt einen Container mit shared_ptr zu nehmen. Eigentlich ist das damit ziemlich einfach gelöst.</p>
<p>Findet ihr das gut oder denkt ihr, ich habe hier einen Designfehler bzw. habt ihr bessere Vorschläge?</p>
</blockquote>
<p>Ich finde das gut - siehe meine Antwort im anderen Thread. Texturen haben eine Identität, und sollten daher nicht kopierbar sein. Da man in Game-Engines vermutlich öfters mal Shared-Ownership hat, ist <code>shared_ptr&lt;T&gt;</code> auch die richtige Wahl.</p>
<p>Evtl. könnte noch eine <code>std::map&lt;MyIdType, shared_ptr&lt;T&gt;&gt;</code> besser geeignet sein als ein Vektor. Und zwar wenn du oft eine Textur anhand ihrer ID (Name/Nummer/...) raussuchen musst. z.B. wenn in einem Datenfile auf Texturen referenziert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959832</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 30 Sep 2010 22:34:42 GMT</pubDate></item><item><title><![CDATA[Reply to dtor macht zu viel kaputt, shared_ptr? on Fri, 01 Oct 2010 01:16:52 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Jep, ich nutze die auch ueber eine Map. Dummerweise gerade noch ueber Schluessel string, das werde ich wohl Mal in eine unordered_map schieben, sollte ja schneller gehen.</p>
<p>kruemelkracker:<br />
Mit der Dreierregel hast Du ebenfalls Recht, werde ich umsetzen, danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959858</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959858</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Fri, 01 Oct 2010 01:16:52 GMT</pubDate></item><item><title><![CDATA[Reply to dtor macht zu viel kaputt, shared_ptr? on Fri, 01 Oct 2010 00:48:24 GMT]]></title><description><![CDATA[<p>Mit der Dreierregel hab' nicht ich recht sondern krümelkacker <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/1959864</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959864</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 01 Oct 2010 00:48:24 GMT</pubDate></item><item><title><![CDATA[Reply to dtor macht zu viel kaputt, shared_ptr? on Fri, 01 Oct 2010 01:17:13 GMT]]></title><description><![CDATA[<p>Genau, hab's korrigiert/verstaendlicher gemacht. <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/1959866</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959866</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Fri, 01 Oct 2010 01:17:13 GMT</pubDate></item><item><title><![CDATA[Reply to dtor macht zu viel kaputt, shared_ptr? on Fri, 01 Oct 2010 08:22:45 GMT]]></title><description><![CDATA[<p>Betrifft zwar nicht genau dein Problem, aber vielleicht hilft dir die <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-273296.html" rel="nofollow">Diskussion</a> über eine Ressourcen-Verwaltungklasse, die ich kürzlich geführt habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1959941</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959941</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 01 Oct 2010 08:22:45 GMT</pubDate></item><item><title><![CDATA[Reply to dtor macht zu viel kaputt, shared_ptr? on Fri, 01 Oct 2010 08:53:50 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Betrifft zwar nicht genau dein Problem, aber vielleicht hilft dir die <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-273296.html" rel="nofollow">Diskussion</a> über eine Ressourcen-Verwaltungklasse, die ich kürzlich geführt habe.</p>
</blockquote>
<p>Auf diesen Thread habe ich Ihn <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-274596-and-start-is-10.html" rel="nofollow">hier</a> auch schon hingewiesen. <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/1959955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959955</guid><dc:creator><![CDATA[Roger Wilco]]></dc:creator><pubDate>Fri, 01 Oct 2010 08:53:50 GMT</pubDate></item><item><title><![CDATA[Reply to dtor macht zu viel kaputt, shared_ptr? on Fri, 01 Oct 2010 09:12:31 GMT]]></title><description><![CDATA[<p>Habs nachher auch noch gesehen, danke <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/1959961</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1959961</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 01 Oct 2010 09:12:31 GMT</pubDate></item></channel></rss>