<?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[Anwendungsbeispiel für this ???]]></title><description><![CDATA[<p>Vieleicht liegt es an meiner Unkenntnis. Vieleicht an meiner Art zu programmieren.<br />
Ich übergebe Objekte meistens über ein Drittes oder Beide wurden im selben lokalen Bereich erstellt.<br />
Ich kam wirklich erst einmal in die Versuchung den this-&gt;Zeiger einzusetzen. Da kann doch was nicht stimmen <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="😃"
    /> Die meisten src's die ich sehe sind aber voll mit this-&gt;Zeigern.</p>
<p>Wann ist er sinnvoll oder unabdingbar?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/227871/anwendungsbeispiel-für-this</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 19:08:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/227871.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 20 Nov 2008 21:42:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anwendungsbeispiel für this ??? on Thu, 20 Nov 2008 21:42:15 GMT]]></title><description><![CDATA[<p>Vieleicht liegt es an meiner Unkenntnis. Vieleicht an meiner Art zu programmieren.<br />
Ich übergebe Objekte meistens über ein Drittes oder Beide wurden im selben lokalen Bereich erstellt.<br />
Ich kam wirklich erst einmal in die Versuchung den this-&gt;Zeiger einzusetzen. Da kann doch was nicht stimmen <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="😃"
    /> Die meisten src's die ich sehe sind aber voll mit this-&gt;Zeigern.</p>
<p>Wann ist er sinnvoll oder unabdingbar?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618010</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618010</guid><dc:creator><![CDATA[belsina]]></dc:creator><pubDate>Thu, 20 Nov 2008 21:42:15 GMT</pubDate></item><item><title><![CDATA[Reply to Anwendungsbeispiel für this ??? on Thu, 20 Nov 2008 22:09:50 GMT]]></title><description><![CDATA[<p>this-&gt; in der Form benutze ich eigentlich nie, aber this oder *this schon eher(Als Übergabeparameter von irgendwelchen Funktionen). Auch häufig im Bezug auf boost.bind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618022</guid><dc:creator><![CDATA[JustAnotherNoob]]></dc:creator><pubDate>Thu, 20 Nov 2008 22:09:50 GMT</pubDate></item><item><title><![CDATA[Reply to Anwendungsbeispiel für this ??? on Fri, 21 Nov 2008 03:46:19 GMT]]></title><description><![CDATA[<p>belsina schrieb:</p>
<blockquote>
<p>Wann ist er sinnvoll oder unabdingbar?</p>
</blockquote>
<p>Es gibt einfach Situationen in denen man einen Zeiger auf's &quot;eigene&quot; Objekt *braucht*. Einfaches Beispiel (Listener Pattern):</p>
<pre><code class="language-cpp">class EventSink // der wo events empfangen/verarbeiten will (abstrakt)
{
    virtual void EventFoo() = 0;
    virtual void EventBar() = 0;
};

class EventSource // der wo events ausspuckt
{
public:
    void AttachSink(EventSink* sink);
    void DetachSink(EventSink* sink);
};

class HinzKunz : public EventSink
{
public:
    explicit HinzKunz()
    {
        m_eventSource.reset(new EventSource()); // angenommen die m_eventSource brauchen wir aus irgendeinem Grund hier als member
        m_eventSource-&gt;AttachSink(this); // so, und nu mach dashier mal ohne &quot;this&quot; keyword :)
    }

    ~HinzKunz()
    {
        m_eventSource-&gt;DetachSink(this);
    }

    virtual void EventFoo()
    {
        std::cout &lt;&lt; &quot;HinzKunz bekommt FOO!\n&quot;;
    }

    virtual void EventBar()
    {
        std::cout &lt;&lt; &quot;HinzKunz bekommt BAR!\n&quot;;
    }

private:
    std::auot_ptr&lt;EventSource&gt; m_eventSource;
};
</code></pre>
<p>Was JustAnotherNoob angesprochen hat (boost::bind) ist im Prinzip ähnlich: da braucht man eben auch &quot;this&quot; um einer fremden Klasse (in dem Fall dem von boost::bind erzeugten Funktor) den Zeiger auf das &quot;eigene&quot; Objekt mitzugeben, damit dieses Objekt dann &quot;zurückrufen&quot; kann, also irgendwelche Funktionen auf dem &quot;eigenen&quot; Objekt ausführen.</p>
<p>Ein anderes Beispiel wo man ohne &quot;this&quot; nicht weit kommt wäre das CRTP: <a href="http://en.wikipedia.org/wiki/Curiously_Recurring_Template_Pattern" rel="nofollow">http://en.wikipedia.org/wiki/Curiously_Recurring_Template_Pattern</a></p>
<p>----</p>
<p>Was man dagegen oft sieht, nämlich statt &quot;m_myMember = 123;&quot; eben &quot;this-&gt;m_myMember = 123;&quot; zu schreiben halte ich persönlich nicht für sinnvoll oder gut. Um Member-Variablen von anderen Variablen (lokal, Parameter etc.) zu unterscheiden verwende ich (und viele viele andere) hier den Prefix &quot;m_&quot;. Das hat IMO mehrere Vorteile.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618066</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 21 Nov 2008 03:46:19 GMT</pubDate></item><item><title><![CDATA[Reply to Anwendungsbeispiel für this ??? on Fri, 21 Nov 2008 08:15:53 GMT]]></title><description><![CDATA[<p>Der einfachste Fall dürfte der Assignment-Operator einer Klasse sein:</p>
<pre><code>class A
{
public:
   ...
   A &amp; operator = (A const &amp; rhs)
   {
      if (this != &amp;rhs)
      {
         ...
      }
      return *this;
   }
   ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1618122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618122</guid><dc:creator><![CDATA[jencas]]></dc:creator><pubDate>Fri, 21 Nov 2008 08:15:53 GMT</pubDate></item><item><title><![CDATA[Reply to Anwendungsbeispiel für this ??? on Fri, 21 Nov 2008 09:31:10 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class Bar
{
    int a;
     void foo(int a)
     {
         this-&gt;a = a; // temp. a in das member-a zuweisen
     }
};
</code></pre>
<p>Ohne this würde das nicht gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618160</guid><dc:creator><![CDATA[Bulli]]></dc:creator><pubDate>Fri, 21 Nov 2008 09:31:10 GMT</pubDate></item><item><title><![CDATA[Reply to Anwendungsbeispiel für this ??? on Fri, 21 Nov 2008 09:46:34 GMT]]></title><description><![CDATA[<p>Bulli schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class Bar
{
    int a;
     void foo(int a)
     {
         this-&gt;a = a; // temp. a in das member-a zuweisen
     }
};
</code></pre>
<p>Ohne this würde das nicht gehen.</p>
</blockquote>
<p>Doch :p</p>
<pre><code class="language-cpp">class Bar
{
    int a;
     void foo(int a)
     {
         Bar::a = a; // temp. a in das member-a zuweisen
     }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1618171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618171</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 21 Nov 2008 09:46:34 GMT</pubDate></item><item><title><![CDATA[Reply to Anwendungsbeispiel für this ??? on Fri, 21 Nov 2008 11:02:25 GMT]]></title><description><![CDATA[<p>Wenn schon denn schon:</p>
<pre><code class="language-cpp">class Bar
{
public:
    int a;
     void foo(int a)
     {
        ((Bar*)(*((&amp;a)-1)))-&gt;a = a;
     }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1618222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618222</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 21 Nov 2008 11:02:25 GMT</pubDate></item><item><title><![CDATA[Reply to Anwendungsbeispiel für this ??? on Fri, 21 Nov 2008 11:16:10 GMT]]></title><description><![CDATA[<p>jencas schrieb:</p>
<blockquote>
<p>Der einfachste Fall dürfte der Assignment-Operator einer Klasse sein:</p>
<pre><code>class A
{
public:
   ...
   A &amp; operator = (A const &amp; rhs)
   {
      if (this != &amp;rhs)
      {
         ...
      }
      return *this;
   }
   ...
}
</code></pre>
</blockquote>
<p>Nur ist es nicht üblich, den Assignment-Operator so zu implementieren. Viel eher über Copy&amp;Swap...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618233</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 21 Nov 2008 11:16:10 GMT</pubDate></item><item><title><![CDATA[Reply to Anwendungsbeispiel für this ??? on Fri, 21 Nov 2008 11:30:12 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>Nur ist es nicht üblich, den Assignment-Operator so zu implementieren. Viel eher über Copy&amp;Swap...</p>
</blockquote>
<p>Diese Methode hat schon auch seinen Verwendungszweck. Vor allem, wenn die Objekte relativ gross sind, dann kann es durchaus Sinn machen es durch dieses Vorgehen zu implementieren.<br />
Aber es ist schon sicherer mit Copy&amp;Swap, da man da nicht viel falsch machen kann. (auf jeden Fall nicht im Assignment-Operator.. :))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618243</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 21 Nov 2008 11:30:12 GMT</pubDate></item><item><title><![CDATA[Reply to Anwendungsbeispiel für this ??? on Fri, 21 Nov 2008 12:16:08 GMT]]></title><description><![CDATA[<blockquote>
<p>Ohne this würde das nicht gehen.</p>
</blockquote>
<p>Und mit this wirds verwirrend.<br />
vor allem toll finde ich in der Hinsicht auch folgendes Konstrukt.</p>
<pre><code class="language-cpp">class A
	{
	public:
		A(int a) :
			a(a)
			{}
	private:
		int a;
	};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1618280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618280</guid><dc:creator><![CDATA[JustAnotherNoob]]></dc:creator><pubDate>Fri, 21 Nov 2008 12:16:08 GMT</pubDate></item><item><title><![CDATA[Reply to Anwendungsbeispiel für this ??? on Fri, 21 Nov 2008 13:27:41 GMT]]></title><description><![CDATA[<p>JustAnotherNoob schrieb:</p>
<blockquote>
<p>vor allem toll finde ich in der Hinsicht auch folgendes Konstrukt.</p>
</blockquote>
<p>Dann würdest du meine Sourcen hassen.</p>
<p>Ich bennene Übergabeparameter nicht selten identisch wie Membervariablen. Warum? Erstens hasse ich kryptische Kürzel um Membervariablen sichtbar zu machen (dann finde ich das selbst ein &quot;this-&gt;&quot; besser lesbarer ist, und vor allem wirklich beschreibt um was es geht. Zweitens benenne ich variablen nach dem was sie machen mit einheitlicher pascalCase-Notation.</p>
<p>Wobei ich zugebe das ich mit deiner Einrückungsform auch Leseprobleme habe.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1618325</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1618325</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 21 Nov 2008 13:27:41 GMT</pubDate></item></channel></rss>