<?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[Ist es sicher den this-Pointer zu speichern?]]></title><description><![CDATA[<p>Hallo,</p>
<p>angenommen ich will eine Baumstruktur erstellen, dann muss ich ja in jedem Knoten einen Pointer auf den &quot;parent&quot; des aktuellen Knotens speichern. Vom Prinzip her mache ich das so:</p>
<pre><code>#include &lt;memory&gt;
#include &lt;vector&gt;
#include &lt;iostream&gt;

template &lt;typename T&gt;
struct node
{
	node *parent;
	std::vector&lt;std::shared_ptr&lt;node&gt;&gt; children;
	std::shared_ptr&lt;T&gt; data;

	node() {}
	template &lt;typename data_type&gt;
	explicit node(data_type const &amp;data) : data(std::make_shared&lt;data_type&gt;(data)) {}

	node *add_child(T data) { 
		children.push_back(std::make_shared&lt;node&gt;(data));
		children.back()-&gt;parent = this; // Frage: sicher?
		return children.back().get();
	}
};

int main()
{
	node&lt;int&gt; n;
	n.add_child(1);
	n.add_child(2);

	for (auto const &amp;i : n.children) {
		std::cout &lt;&lt; *(i-&gt;data) &lt;&lt; '\n'; // Output: 1 2
	}
}
</code></pre>
<p>Dazu jetzt meine Frage, ist das so sicher (laufen tut es zumindest so wie es soll, aber das muss ja nichts heißen)? Oder kann sich der this-Pointer verändern, obwohl das Objekt noch lebt? Und, ist das prinzipiell so Ok oder würde man das anders machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/330294/ist-es-sicher-den-this-pointer-zu-speichern</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 18:59:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/330294.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 Jan 2015 20:56:27 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Thu, 01 Jan 2015 20:56:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>angenommen ich will eine Baumstruktur erstellen, dann muss ich ja in jedem Knoten einen Pointer auf den &quot;parent&quot; des aktuellen Knotens speichern. Vom Prinzip her mache ich das so:</p>
<pre><code>#include &lt;memory&gt;
#include &lt;vector&gt;
#include &lt;iostream&gt;

template &lt;typename T&gt;
struct node
{
	node *parent;
	std::vector&lt;std::shared_ptr&lt;node&gt;&gt; children;
	std::shared_ptr&lt;T&gt; data;

	node() {}
	template &lt;typename data_type&gt;
	explicit node(data_type const &amp;data) : data(std::make_shared&lt;data_type&gt;(data)) {}

	node *add_child(T data) { 
		children.push_back(std::make_shared&lt;node&gt;(data));
		children.back()-&gt;parent = this; // Frage: sicher?
		return children.back().get();
	}
};

int main()
{
	node&lt;int&gt; n;
	n.add_child(1);
	n.add_child(2);

	for (auto const &amp;i : n.children) {
		std::cout &lt;&lt; *(i-&gt;data) &lt;&lt; '\n'; // Output: 1 2
	}
}
</code></pre>
<p>Dazu jetzt meine Frage, ist das so sicher (laufen tut es zumindest so wie es soll, aber das muss ja nichts heißen)? Oder kann sich der this-Pointer verändern, obwohl das Objekt noch lebt? Und, ist das prinzipiell so Ok oder würde man das anders machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435700</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435700</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Thu, 01 Jan 2015 20:56:45 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Thu, 01 Jan 2015 20:59:13 GMT]]></title><description><![CDATA[<p>Suchst du<a href="http://en.cppreference.com/w/cpp/memory/enable_shared_from_this" rel="nofollow"> <code>enable_shared_from_this</code> </a>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435701</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 01 Jan 2015 20:59:13 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Thu, 01 Jan 2015 21:00:21 GMT]]></title><description><![CDATA[<p>shared_ptr ist nicht der passende Smartpointer für eine Baumstruktur.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435702</guid><dc:creator><![CDATA[baumstruktur]]></dc:creator><pubDate>Thu, 01 Jan 2015 21:00:21 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Thu, 01 Jan 2015 21:17:33 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Suchst du<a href="http://en.cppreference.com/w/cpp/memory/enable_shared_from_this" rel="nofollow"> <code>enable_shared_from_this</code> </a>?</p>
</blockquote>
<p>Hm ich glaub nicht, also ich will ja keinen shared_ptr aus add_child zurückgeben sondern einen normalen (rohen) pointer, oder verstehe ich deinen Vorschlag jetzt falsch?</p>
<p>baumstruktur schrieb:</p>
<blockquote>
<p>shared_ptr ist nicht der passende Smartpointer für eine Baumstruktur.</p>
</blockquote>
<p>Sondern welcher dann? unique_ptr?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435703</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Thu, 01 Jan 2015 21:17:33 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Thu, 01 Jan 2015 21:41:12 GMT]]></title><description><![CDATA[<p>happystudent schrieb:</p>
<blockquote>
<p>baumstruktur schrieb:</p>
<blockquote>
<p>shared_ptr ist nicht der passende Smartpointer für eine Baumstruktur.</p>
</blockquote>
<p>Sondern welcher dann? unique_ptr?</p>
</blockquote>
<p>Ja, entweder unique_ptr, wenn du sagst, dass die Kinder ihren Eltern gehören. Oder ganz normale, rohe Zeiger, wenn du sagst, dass die Knoten dem Baum gehören. shared_ptr ist hier unpassend. Was soll das hier genau modellieren und wann sollen jemals die Eigenschaften eines shared_ptr hier eine Rolle spielen? Sollen mehrere Eltern das gleiche Kind besitzen können?</p>
<p>Zu deiner eigentlichen Frage: make_shared nutzt intern (oder verhält sich so als ob) den globalen Operator new. Ein so erstelltes Objekt verändert nicht einfach so seine Adresse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435706</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435706</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 01 Jan 2015 21:41:12 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Thu, 01 Jan 2015 21:53:31 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Ja, entweder unique_ptr, wenn du sagst, dass die Kinder ihren Eltern gehören. Oder ganz normale, rohe Zeiger, wenn du sagst, dass die Knoten dem Baum gehören. shared_ptr ist hier unpassend. Was soll das hier genau modellieren und wann sollen jemals die Eigenschaften eines shared_ptr hier eine Rolle spielen? Sollen mehrere Eltern das gleiche Kind besitzen können?</p>
</blockquote>
<p>Ok, alles klar dann werd ich auf unique_ptr umsteigen.</p>
<p>SeppJ schrieb:</p>
<blockquote>
<p>Zu deiner eigentlichen Frage: make_shared nutzt intern (oder verhält sich so als ob) den globalen Operator new. Ein so erstelltes Objekt verändert nicht einfach so seine Adresse.</p>
</blockquote>
<p>Ok, das ist auf jeden Fall gut zu wissen, 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/2435708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435708</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Thu, 01 Jan 2015 21:53:31 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Thu, 01 Jan 2015 22:11:10 GMT]]></title><description><![CDATA[<p>Ich bin anderer Meinung. Ein Baum ist eine rekursive Datenstruktur.<br />
Ich hatte sehr wohl schon den Anwendungsfall Unterbäume herumreichen und speichern zu wollen und habe da den Baum von unique_ptr auf shared_ptr umgestellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435709</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435709</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Thu, 01 Jan 2015 22:11:10 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Thu, 01 Jan 2015 22:35:57 GMT]]></title><description><![CDATA[<p>Wobei unique_ptr hier nur bedingt einsatzfähig ist.<br />
In Bezug auf node::data ist nicht klar, wieso hier überhaupt Indirektion erforderlich ist, ein unique_ptr wäre allerdings möglich.<br />
node::children kann allerdings kein std::vector&lt;std::unique_ptr&lt;node&gt;&gt; sein ohne UB hevorzurufen.<br />
Im Prinzip ist auch für node::children die doppelte Indirektion (1 Indirektion wird ja schon durch vector impliziert) überflüssig, mit ein bisschen Aufwand (wie z.B. <a href="https://www.c-plusplus.net/forum/329707">hier</a>) kann man diese ebenso vermeiden, und so ganz auf Zeiger (sowohl roh als auch smart) verzichten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435710</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 01 Jan 2015 22:35:57 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Thu, 01 Jan 2015 22:40:36 GMT]]></title><description><![CDATA[<p>Ethon schrieb:</p>
<blockquote>
<p>Ich hatte sehr wohl schon den Anwendungsfall Unterbäume herumreichen und speichern zu wollen und habe da den Baum von unique_ptr auf shared_ptr umgestellt.</p>
</blockquote>
<p>Und <strong>alle</strong> Unterbäume können den Baum überleben?<br />
Dann hast du den Baum hoffentlich immutable gemacht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435711</guid><dc:creator><![CDATA[baumstruktur]]></dc:creator><pubDate>Thu, 01 Jan 2015 22:40:36 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Thu, 01 Jan 2015 23:17:40 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Wobei unique_ptr hier nur bedingt einsatzfähig ist.<br />
In Bezug auf node::data ist nicht klar, wieso hier überhaupt Indirektion erforderlich ist, ein unique_ptr wäre allerdings möglich.</p>
</blockquote>
<p>Das hab ich gemacht, weil ich einen Baum von abstrakten Objekten brauche, also was wie <code>tree&lt;my_abstract_object&gt;</code> .</p>
<p>camper schrieb:</p>
<blockquote>
<p>node::children kann allerdings kein std::vector&lt;std::unique_ptr&lt;node&gt;&gt; sein ohne UB hevorzurufen.</p>
</blockquote>
<p>Hä, warum dass?</p>
<p>camper schrieb:</p>
<blockquote>
<p>Im Prinzip ist auch für node::children die doppelte Indirektion (1 Indirektion wird ja schon durch vector impliziert) überflüssig, mit ein bisschen Aufwand (wie z.B. <a href="https://www.c-plusplus.net/forum/329707">hier</a>) kann man diese ebenso vermeiden, und so ganz auf Zeiger (sowohl roh als auch smart) verzichten.</p>
</blockquote>
<p>Aber da verwende ich doch auch <code>shared_ptr</code> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435716</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Thu, 01 Jan 2015 23:17:40 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Thu, 01 Jan 2015 23:24:54 GMT]]></title><description><![CDATA[<p>Template-Argumente fuer Templates in der Standardbibliothek (smart pointer eingeschlossen) duerfen i.d.R. Keine unvollstaendigen Typen sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435717</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435717</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 01 Jan 2015 23:24:54 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Thu, 01 Jan 2015 23:27:12 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Template-Argumente an Templates in der Standardbibliothek (smart pointer eingeschlossen) duerfen i.d.R. nicht unvollstaendig sein.</p>
</blockquote>
<p>Wie jetzt, <a href="https://www.c-plusplus.net/forum/329707-10">hier</a> wurde mir aber gesagt dass smart pointer hier eine Ausnahme sind. Wie soll man denn sonst unvollständige Typen mit smart pointern speichern und was stimmt jetzt hier? Oder gilt das jetzt nur für <code>smart_ptr</code> und nicht für <code>unique_ptr</code> ? Warum wäre dass dann anders als bei <code>smart_ptr</code> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435719</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435719</guid><dc:creator><![CDATA[happystudent]]></dc:creator><pubDate>Thu, 01 Jan 2015 23:27:12 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Thu, 01 Jan 2015 23:36:41 GMT]]></title><description><![CDATA[<p>Ja, hast natürlich Recht.</p>
<p>[unique.ptr]/5 schrieb:</p>
<blockquote>
<p>The template parameter <code>T</code> of <code>unique_ptr</code> may be an incomplete type.</p>
</blockquote>
<p>Ich hatte flugs in der nachvollziehbaren Annahme geantwortet dass camper keine Flüchtigkeitsfehler mache. (Außerdem war ich auf dem Handy und konnte nicht den Standard checken. :p )</p>
<blockquote>
<p>Warum wäre dass dann anders als bei <code>smart_ptr</code> ?</p>
</blockquote>
<p>Weil <code>shared_ptr</code> etwas anderes ist als <code>unique_ptr</code> . Ich nehme mal an es müssen einige interne Deklarationen instantiiert werden die die Vollständigkeit von <code>T</code> voraussetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435720</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 01 Jan 2015 23:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Thu, 01 Jan 2015 23:40:00 GMT]]></title><description><![CDATA[<p>... Ich wusste ich hätt's prüfen sollen.</p>
<p>[util.smartptr.shared]/2 schrieb:</p>
<blockquote>
<p>The template parameter <code>T</code> of <code>shared_ptr</code> may be an incomplete type.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2435722</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435722</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Thu, 01 Jan 2015 23:40:00 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Fri, 02 Jan 2015 07:28:48 GMT]]></title><description><![CDATA[<p>baumstruktur schrieb:</p>
<blockquote>
<p>Ethon schrieb:</p>
<blockquote>
<p>Ich hatte sehr wohl schon den Anwendungsfall Unterbäume herumreichen und speichern zu wollen und habe da den Baum von unique_ptr auf shared_ptr umgestellt.</p>
</blockquote>
<p>Und <strong>alle</strong> Unterbäume können den Baum überleben?<br />
Dann hast du den Baum hoffentlich immutable gemacht.</p>
</blockquote>
<p>In meinem Fall ging es um einen AST, der interpretiert wurde. Unterbäume wurden durch Opimierungen modifiziert, dass diese nur 1x für beliebig viele Kopien durchgeführt wurden war sogar erwünscht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435732</guid><dc:creator><![CDATA[Ethon]]></dc:creator><pubDate>Fri, 02 Jan 2015 07:28:48 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Fri, 02 Jan 2015 20:50:35 GMT]]></title><description><![CDATA[<p>Arcoth schrieb:</p>
<blockquote>
<p>Ja, hast natürlich Recht.</p>
<p>[unique.ptr]/5 schrieb:</p>
<blockquote>
<p>The template parameter <code>T</code> of <code>unique_ptr</code> may be an incomplete type.</p>
</blockquote>
<p>Ich hatte flugs in der nachvollziehbaren Annahme geantwortet dass camper keine Flüchtigkeitsfehler mache. (Außerdem war ich auf dem Handy und konnte nicht den Standard checken. :p )</p>
</blockquote>
<p>Huh, keine Ahnung wie miur das entgehen konnte... aber wäre nicht das erste mal, dass ich Unfug erzähle und wird auch nicht das letzte mal gewesen sein. Also schön wachsam bleiben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435823</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435823</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 02 Jan 2015 20:50:35 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Fri, 02 Jan 2015 20:53:35 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Arcoth schrieb:</p>
<blockquote>
<p>Ja, hast natürlich Recht.</p>
<p>[unique.ptr]/5 schrieb:</p>
<blockquote>
<p>The template parameter <code>T</code> of <code>unique_ptr</code> may be an incomplete type.</p>
</blockquote>
<p>Ich hatte flugs in der nachvollziehbaren Annahme geantwortet dass camper keine Flüchtigkeitsfehler mache. (Außerdem war ich auf dem Handy und konnte nicht den Standard checken. :p )</p>
</blockquote>
<p>Huh, keine Ahnung wie miur das entgehen konnte... aber wäre nicht das erste mal, dass ich Unfug erzähle und wird auch nicht das letzte mal gewesen sein. Also schön wachsam bleiben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
</blockquote>
<p>Kennt ihr beide nicht das neue &quot;idiomatische&quot; Pimpl Idiom?</p>
<pre><code>class foo
{
   struct impl;
   std::unique_ptr&lt;impl&gt; pimpl;
public:
   ~foo(); // destruktor muss dann natürlich in cpp definiert werden...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2435824</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435824</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 02 Jan 2015 20:53:35 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Fri, 02 Jan 2015 20:55:25 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Kennt ihr beide nicht das neue &quot;idiomatische&quot; Pimpl Idiom?</p>
<pre><code>class foo
{
   struct impl;
   std::unique_ptr&lt;impl&gt; pimpl;
public:
   ~foo(); // destruktor muss dann natürlich in cpp definiert werden...
};
</code></pre>
</blockquote>
<p>Jetzt nur noch die beiden Kopierkonstruktoren und den einen Zuweisungsoperator definieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435826</guid><dc:creator><![CDATA[plimpl]]></dc:creator><pubDate>Fri, 02 Jan 2015 20:55:25 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Fri, 02 Jan 2015 20:57:31 GMT]]></title><description><![CDATA[<p>plimpl schrieb:</p>
<blockquote>
<p>Nathan schrieb:</p>
<blockquote>
<p>Kennt ihr beide nicht das neue &quot;idiomatische&quot; Pimpl Idiom?</p>
<pre><code>class foo
{
   struct impl;
   std::unique_ptr&lt;impl&gt; pimpl;
public:
   ~foo(); // destruktor muss dann natürlich in cpp definiert werden...
};
</code></pre>
</blockquote>
<p>Jetzt nur noch die beiden Kopierkonstruktoren und den einen Zuweisungsoperator definieren.</p>
</blockquote>
<p>Jup.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435827</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 02 Jan 2015 20:57:31 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Fri, 02 Jan 2015 20:58:41 GMT]]></title><description><![CDATA[<p>Und das reicht immer noch nicht, wenn man die Klasse aus einer Dll exportieren will, was bei einer Klasse mit Pimpl nicht unwahrscheinlich ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435828</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Fri, 02 Jan 2015 20:58:41 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Fri, 02 Jan 2015 21:00:10 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Kennt ihr beide nicht das neue &quot;idiomatische&quot; Pimpl Idiom?</p>
<pre><code>class foo
{
   struct impl;
   std::unique_ptr&lt;impl&gt; pimpl;
public:
   ~foo(); // destruktor muss dann natürlich in cpp definiert werden...
};
</code></pre>
</blockquote>
<p>Macht in der Praxis kaum jemand so. Da in aller Regel sowieso noch Kopieren und Zuweisung definiert wird, ist der Nutzen gering.<br />
(Die Verwendung von unique_ptr erspart copy-ctor und -Opeerator sofern die Semantik stimmt; aber diese Verletzung der Regel der Drei bedarf im Prinzip schon wieder eines Kommentares der die Ersparnis negiert).</p>
<p>Und früher zu auto_ptr-Zeiten war das eben undefiniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435829</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 02 Jan 2015 21:00:10 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Fri, 02 Jan 2015 21:09:18 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Macht in der Praxis kaum jemand so. Da in aller Regel sowieso noch Kopieren und Zuweisung definiert wird, ist der Nutzen gering.<br />
(Die Verwendung von unique_ptr erspart copy-ctor und -Opeerator sofern die Semantik stimmt; aber diese Verletzung der Regel der Drei bedarf im Prinzip schon wieder eines Kommentares der die Ersparnis negiert).</p>
</blockquote>
<p>Habe ich nicht abgestritten, mag PIMPL generell nicht so.<br />
Daher weiß ich aber, dass unique_ptr mit unvollständigen Typen klar kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435831</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435831</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 02 Jan 2015 21:09:18 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Fri, 02 Jan 2015 21:33:32 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Habe ich nicht abgestritten, mag PIMPL generell nicht so.</p>
</blockquote>
<p>Falls du mal in die Verlegenheit kommen solltest, solche Namespace-Seuchen wie &quot;windows.h&quot; einbinden zu müssen, wirst du PIMPL mit anderen Augen sehen <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="😃"
    /><br />
(Gilt auch für diverse andere Bibliotheken, die den globalen Namensraum über Gebühr befüllen).</p>
<p>Finnegan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2435833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435833</guid><dc:creator><![CDATA[Finnegan]]></dc:creator><pubDate>Fri, 02 Jan 2015 21:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to Ist es sicher den this-Pointer zu speichern? on Fri, 02 Jan 2015 22:55:08 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Daher weiß ich aber, dass unique_ptr mit unvollständigen Typen klar kommt.</p>
</blockquote>
<p>Der einzige Grund aus dem du uns das mitteilen könntest ist um zu beweisen dass du es vorher wusstest. <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/2435839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2435839</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Fri, 02 Jan 2015 22:55:08 GMT</pubDate></item></channel></rss>