<?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[shared_ptr und this-Zeiger]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte shared_ptr verwenden und frage mich wie ich einen solchen mit dem this-Zeiger initialisiere?</p>
<p>Der Grund ist die folgende Klasse. Und zwar möchte ich verhindern das in itsSubAbcs ein shared_ptr enthalten ist der auf das eigene Objekt zeigt.</p>
<pre><code class="language-cpp">class Abc {

public:
  typedef boost::shared_ptr&lt;Abc&gt; AbcPtr;

public:
  void addSubAbc(const AbcPtr&amp; aSubAbc);

private
  std::set&lt;AbcPtr&gt; itsSubAbcs;
};
</code></pre>
<p>Dazu müsste ich es erstmal schaffen einen this-Zeiger an einen shared_ptr zu übergeben. Schaffe ich aber nicht!</p>
<p>Weiß jemand Rat?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/229328/shared_ptr-und-this-zeiger</link><generator>RSS for Node</generator><lastBuildDate>Mon, 28 Sep 2026 00:45:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/229328.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 10 Dec 2008 12:05:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to shared_ptr und this-Zeiger on Wed, 10 Dec 2008 12:06:16 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich möchte shared_ptr verwenden und frage mich wie ich einen solchen mit dem this-Zeiger initialisiere?</p>
<p>Der Grund ist die folgende Klasse. Und zwar möchte ich verhindern das in itsSubAbcs ein shared_ptr enthalten ist der auf das eigene Objekt zeigt.</p>
<pre><code class="language-cpp">class Abc {

public:
  typedef boost::shared_ptr&lt;Abc&gt; AbcPtr;

public:
  void addSubAbc(const AbcPtr&amp; aSubAbc);

private
  std::set&lt;AbcPtr&gt; itsSubAbcs;
};
</code></pre>
<p>Dazu müsste ich es erstmal schaffen einen this-Zeiger an einen shared_ptr zu übergeben. Schaffe ich aber nicht!</p>
<p>Weiß jemand Rat?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628161</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628161</guid><dc:creator><![CDATA[goran]]></dc:creator><pubDate>Wed, 10 Dec 2008 12:06:16 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr und this-Zeiger on Wed, 10 Dec 2008 12:09:17 GMT]]></title><description><![CDATA[<p>goran schrieb:</p>
<blockquote>
<p>Der Grund ist die folgende Klasse. Und zwar möchte ich verhindern das in itsSubAbcs ein shared_ptr enthalten ist der auf das eigene Objekt zeigt.</p>
</blockquote>
<p>Du kannst doch in <code>addSubAbc</code> mit <code>aSubAbc.get()</code> auf <code>!= this</code> prüfen.</p>
<p>goran schrieb:</p>
<blockquote>
<p>Dazu müsste ich es erstmal schaffen einen this-Zeiger an einen shared_ptr zu übergeben. Schaffe ich aber nicht!</p>
</blockquote>
<p>Woran hapert's denn, ein this-Zeiger ist doch wie jeder andere Zeiger auch? Evtl hilft auch die reset-Methode von shared_ptr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628165</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Wed, 10 Dec 2008 12:09:17 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr und this-Zeiger on Wed, 10 Dec 2008 13:00:45 GMT]]></title><description><![CDATA[<p>goran schrieb:</p>
<blockquote>
<p>ich möchte shared_ptr verwenden und frage mich wie ich einen solchen mit dem this-Zeiger initialisiere?</p>
</blockquote>
<p><a href="http://www.boost.org/doc/libs/1_37_0/libs/smart_ptr/enable_shared_from_this.html" rel="nofollow">z.B. enable_shared_from_this</a>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628216</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 10 Dec 2008 13:00:45 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr und this-Zeiger on Wed, 10 Dec 2008 13:57:37 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>danke für die Antworten. Das get()-Methode war das was ich gesucht habe.</p>
<p>Sorry, hätt' ich die Doku genauer unter die Lupe genommen hätte ich nicht fragen/nerven <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="😉"
    /> brauchen.</p>
<p>Gruß, Goran</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628264</guid><dc:creator><![CDATA[goran]]></dc:creator><pubDate>Wed, 10 Dec 2008 13:57:37 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr und this-Zeiger on Wed, 10 Dec 2008 14:59:17 GMT]]></title><description><![CDATA[<p>Du kannst auch einen dummy shared_ptr auf this basteln indem du einen dummy-deleter übergibst der einfach nix tut.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628309</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 10 Dec 2008 14:59:17 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr und this-Zeiger on Thu, 11 Dec 2008 09:49:50 GMT]]></title><description><![CDATA[<p>hustbaer schrieb:</p>
<blockquote>
<p>Du kannst auch einen dummy shared_ptr auf this basteln indem du einen dummy-deleter übergibst der einfach nix tut.</p>
</blockquote>
<p>Naja, aber die übliche Methode ist, seine Klasse von <code>enable_shared_from_this&lt;class&gt;</code> erben zu lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628682</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628682</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 11 Dec 2008 09:49:50 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr und this-Zeiger on Thu, 11 Dec 2008 09:55:25 GMT]]></title><description><![CDATA[<p>Oder man benutzt direkt nen intrusive_ptr... Wobei ich da außer &quot;Locality&quot; (Der Count steht halt direkt beim Objekt im Speicher, wenn man es so implementiert) und eventuell etwas weniger Aufwand nur Nachteile sehe, weil weak_ptr's eine schöne Sache sind <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/1628685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628685</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 11 Dec 2008 09:55:25 GMT</pubDate></item><item><title><![CDATA[Reply to shared_ptr und this-Zeiger on Thu, 11 Dec 2008 10:28:47 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>hustbaer schrieb:</p>
<blockquote>
<p>Du kannst auch einen dummy shared_ptr auf this basteln indem du einen dummy-deleter übergibst der einfach nix tut.</p>
</blockquote>
<p>Naja, aber die übliche Methode ist, seine Klasse von <code>enable_shared_from_this&lt;class&gt;</code> erben zu lassen.</p>
</blockquote>
<p>Wenn man sowieso schon verlangt dass alle Objekte des Typs um den es geht von einem shared_ptr kontrolliert werden, dann ja. Wenn nicht, weil man Fälle erlauben will wo so ein Objekt z.B. auf dem Stack liegt, und man den &quot;shared_ptr auf this&quot; nur kurz, lokal in einer Funktion braucht, und garantiert ist dass sich den keiner ausserhalb dieser Funktion aufhebt, ... in so einem Fall halte ich den &quot;dummy deleter&quot; Trick für OK.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1628724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1628724</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 11 Dec 2008 10:28:47 GMT</pubDate></item></channel></rss>