<?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[Operator überladen (-&amp;gt;)]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Frage zur Überladung des -&gt; Operators:</p>
<p>Für einen SmartPointer habe ich so etwas gesehen:</p>
<pre><code class="language-cpp">T* operator-&gt;() { return _ptr; }
</code></pre>
<p>also dann zum Bespiel :</p>
<pre><code class="language-cpp">SP&lt;A&gt; spA = new A;
spA-&gt;foo();
</code></pre>
<p>spA-&gt; ergibt nun aber doch lediglich eine Zeiger auf A also müsste darauf doch nochmals ein -&gt; folgen um eine Methode von A aufzurufen?</p>
<p>Vielen Dank für die Hilfe!<br />
Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/206394/operator-überladen-gt</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 11:02:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/206394.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 24 Feb 2008 18:47:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operator überladen (-&amp;gt;) on Sun, 24 Feb 2008 18:47:18 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe eine Frage zur Überladung des -&gt; Operators:</p>
<p>Für einen SmartPointer habe ich so etwas gesehen:</p>
<pre><code class="language-cpp">T* operator-&gt;() { return _ptr; }
</code></pre>
<p>also dann zum Bespiel :</p>
<pre><code class="language-cpp">SP&lt;A&gt; spA = new A;
spA-&gt;foo();
</code></pre>
<p>spA-&gt; ergibt nun aber doch lediglich eine Zeiger auf A also müsste darauf doch nochmals ein -&gt; folgen um eine Methode von A aufzurufen?</p>
<p>Vielen Dank für die Hilfe!<br />
Gruss</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1462080</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1462080</guid><dc:creator><![CDATA[xType2]]></dc:creator><pubDate>Sun, 24 Feb 2008 18:47:18 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen (-&amp;gt;) on Sun, 24 Feb 2008 19:00:14 GMT]]></title><description><![CDATA[<p>Was spricht dagegen, dass du einfach dereferenzieren tust?</p>
<p>Also:</p>
<pre><code class="language-cpp">(*spA).foo();
</code></pre>
<p>oder gleich so:</p>
<pre><code class="language-cpp">//Keine Überladung
spA-&gt;foo();
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1462086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1462086</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 24 Feb 2008 19:00:14 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen (-&amp;gt;) on Sun, 24 Feb 2008 19:44:25 GMT]]></title><description><![CDATA[<p>Das ist die Magie von -&gt; er dereferenziert soweit es geht. (vereinfacht ausgedrueckt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1462132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1462132</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sun, 24 Feb 2008 19:44:25 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen (-&amp;gt;) on Sun, 24 Feb 2008 23:51:41 GMT]]></title><description><![CDATA[<p>Hallo<br />
danke für die Antworten!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18422">@drakon</a>:</p>
<p>Da sich der Smart Pointer wie ein echter Zeiger bedienen lassen soll brauche ich den -&gt; operator und muss diesen somit auch überladen. Ich wende Ihn ja direkt auf Objekte an (spA ist kein Zeiger).</p>
<p>@ Shade Of Mine:</p>
<p>Aha, danke! Wusste ich nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1462261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1462261</guid><dc:creator><![CDATA[xType2]]></dc:creator><pubDate>Sun, 24 Feb 2008 23:51:41 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen (-&amp;gt;) on Mon, 25 Feb 2008 11:08:46 GMT]]></title><description><![CDATA[<p>xType2 schrieb:</p>
<blockquote>
<p>Hallo<br />
danke für die Antworten!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18422">@drakon</a>:</p>
<p>Da sich der Smart Pointer wie ein echter Zeiger bedienen lassen soll brauche ich den -&gt; operator und muss diesen somit auch überladen. Ich wende Ihn ja direkt auf Objekte an (spA ist kein Zeiger).</p>
<p>@ Shade Of Mine:</p>
<p>Aha, danke! Wusste ich nicht.</p>
</blockquote>
<p>Sry. Habe selber nacher gemerkt,dass es Bullshit ist. <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>
<p>Wenn ich mich nicht täusche, müsste es auch so gehen: (Ohne Überladung)</p>
<pre><code class="language-cpp">(&amp;spA)-&gt;foo ();
</code></pre>
<p>Soll ja aber nicht der Sinn sein. <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/1462348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1462348</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 25 Feb 2008 11:08:46 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen (-&amp;gt;) on Mon, 25 Feb 2008 12:58:16 GMT]]></title><description><![CDATA[<p>Sorry, für den Doppelpost.</p>
<p>Aber bin ich der einzige, dem das irgendwie so nicht gefällt? <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>
<p>Irgendwie kann ich mich mit dem nicht so richtig anfreunden.<br />
Also mal abgesehen von einem SmartPointer ist dieses Überladen ja nicht gerade die feine Art.<br />
Wenn man zum Beispiel einen Zeiger von so einer Klasse will, kann man nicht mehr einfach mit dem -&gt; Operator auf die Elementfunktionen zugreifen. Da muss man zuerst den Zeiger dereferenzieren und erst dann kann man den -&gt; Operator wieder brauchen.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1462433</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1462433</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 25 Feb 2008 12:58:16 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen (-&amp;gt;) on Mon, 25 Feb 2008 14:26:37 GMT]]></title><description><![CDATA[<p>nein, das ist so nicht richtig. Fuer normale Klassen ist der Operator-&gt; nicht definiert, den gibts per default nur fuer Pointer. Du bekommst einzig dann Probleme, wenn du einen Pointer auf ein Objekt einer Klasse hast, die den operator-&gt; ueberladen hat, (z.B. einen Pointer auf einen smartpointer, shared_ptr&lt;T&gt;* ) denn wenn du auf den Pointer dann den eingebauten op-&gt; anwendest, macht C++ sofort weiter und wendet auf das Ergebnis wieder op-&gt; an, was meistens das ist, was man erreichen moechte. Einzig wenn du eine Memberfunktion des Smartpointers aufrufen moechtest, musst du deinen pointer einmalig explizit dereferenzieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1462512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1462512</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 25 Feb 2008 14:26:37 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen (-&amp;gt;) on Mon, 25 Feb 2008 18:27:07 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Du bekommst einzig dann Probleme, wenn du einen Pointer auf ein Objekt einer Klasse hast, die den operator-&gt; ueberladen hat, (z.B. einen Pointer auf einen smartpointer, shared_ptr&lt;T&gt;* ) denn wenn du auf den Pointer dann den eingebauten op-&gt; anwendest, macht C++ sofort weiter und wendet auf das Ergebnis wieder op-&gt; an, was meistens das ist, was man erreichen moechte.</p>
</blockquote>
<p>Unfug.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1462727</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1462727</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Mon, 25 Feb 2008 18:27:07 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen (-&amp;gt;) on Mon, 25 Feb 2008 21:27:25 GMT]]></title><description><![CDATA[<blockquote>
<p>Wenn man zum Beispiel einen Zeiger von so einer Klasse will, kann man nicht mehr einfach mit dem -&gt; Operator auf die Elementfunktionen zugreifen. Da muss man zuerst den Zeiger dereferenzieren und erst dann kann man den -&gt; Operator wieder brauchen.. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Das hat schon gestummen, was ich da geschrieben habe. Wenn du einen Zeiger auf einen Smartpointer hast, und dann den -&gt; Operator benutzt, greifst du auf die Elementfunktionen des Pointers auf. Wenn du jetzt aber die gleiche Funktion willst, wie bei einem normalen Objekt, musst du dereferenzieren oder die umständliche Weise schreiben:</p>
<pre><code class="language-cpp">ptr a;
ptr* b = &amp;a;

a-&gt;foo (); //Die überladene Weise
(*b)-&gt;foo (); //Mit dem Zeiger auf die überladene Weise
b-&gt;operator ()-&gt;foo (); // Ebenfalls mit Zeiger überladene (umständlich)
</code></pre>
<p>Nur was mir da nicht passt, ist, dass sonst ja immer gilt, dass der -&gt; Operator das gleiche macht, wie der . Operator, aber einfach über einen Zeiger.</p>
<p>Nun, das eigentliche Problem, dass ich mir vorstelle (abgesehen von einem Smartpointer) ist, dass, ich sage es jetzt mal extrem, der Benutzer einer (beliebigen Klasse), nicht das Ergebnis bekommt, dass er erwartet, wenn er jetzt anstatt eines normalen Objekt eines mit einem Zeiger erstellt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1462873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1462873</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Mon, 25 Feb 2008 21:27:25 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen (-&amp;gt;) on Tue, 26 Feb 2008 07:37:50 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Du bekommst einzig dann Probleme, wenn du einen Pointer auf ein Objekt einer Klasse hast, die den operator-&gt; ueberladen hat, (z.B. einen Pointer auf einen smartpointer, shared_ptr&lt;T&gt;* ) denn wenn du auf den Pointer dann den eingebauten op-&gt; anwendest, macht C++ sofort weiter und wendet auf das Ergebnis wieder op-&gt; an, was meistens das ist, was man erreichen moechte.</p>
</blockquote>
<p>Unfug.</p>
</blockquote>
<p>Dann muss ich mir den entsprechenden Teil bei Alexandrescu nochmal durchlesen. Der achte sich das irgendwie zunutze, indem er in seinen smartpointern statt C-Poiintern wieder andere smartpointer als member verwendete. Tut mir leid wenn mir das falsch in erinnerung geblieben ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1462988</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1462988</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 26 Feb 2008 07:37:50 GMT</pubDate></item></channel></rss>