<?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 [] für Pointer auf Objekt]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine map Container Klasse geschrieben, die soweit gut funktioniert. Dazu habe ich auch den [] Operator überladen, um direkten Zugriff auf ein Element im Container zu haben (zB. &quot;element = map[&quot;key&quot;];&quot;). Auch das funktioniert gut.</p>
<p>Aber, wenn ich nun meine Instanz der Klasse einer Funktion (mit call by reference) übergebe, dann habe ich einen Pointer auf dieses Objekt. Somit funktionert dieser Aufruf des Operators nicht mehr.</p>
<pre><code>// Die Deklaration des Operators:
Element&lt;T&gt; *operator[](std::string);
</code></pre>
<p>Hat jemand von euch eine Idee, wie ich den überladenen Operator nun auch für einen Pointer auf eine Instanz dieser Klasse lauffähig machen kann?</p>
<p>Gruss und danke im Voraus,<br />
Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/199981/operator-für-pointer-auf-objekt</link><generator>RSS for Node</generator><lastBuildDate>Sat, 03 Oct 2026 22:08:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/199981.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 09 Dec 2007 12:15:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operator [] für Pointer auf Objekt on Sun, 09 Dec 2007 12:15:11 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine map Container Klasse geschrieben, die soweit gut funktioniert. Dazu habe ich auch den [] Operator überladen, um direkten Zugriff auf ein Element im Container zu haben (zB. &quot;element = map[&quot;key&quot;];&quot;). Auch das funktioniert gut.</p>
<p>Aber, wenn ich nun meine Instanz der Klasse einer Funktion (mit call by reference) übergebe, dann habe ich einen Pointer auf dieses Objekt. Somit funktionert dieser Aufruf des Operators nicht mehr.</p>
<pre><code>// Die Deklaration des Operators:
Element&lt;T&gt; *operator[](std::string);
</code></pre>
<p>Hat jemand von euch eine Idee, wie ich den überladenen Operator nun auch für einen Pointer auf eine Instanz dieser Klasse lauffähig machen kann?</p>
<p>Gruss und danke im Voraus,<br />
Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417506</guid><dc:creator><![CDATA[haimat]]></dc:creator><pubDate>Sun, 09 Dec 2007 12:15:11 GMT</pubDate></item><item><title><![CDATA[Reply to Operator [] für Pointer auf Objekt on Sun, 09 Dec 2007 12:30:13 GMT]]></title><description><![CDATA[<p>also hmm irgendwie weiß nicht wie deine map direkt aussieht ... aber guck dir mal referenzen an ..</p>
<pre><code class="language-cpp">template &lt;typename _First, typename _Second&gt;
class map
{
    // ...
    _First const&amp; operator[](_Second const&amp;) const;
    _First&amp; operator[](_Second const&amp;);
    _Second const&amp; operator[](_First const&amp;) const;
    _Second&amp; operator[](_First const&amp;);
    // ...
};
</code></pre>
<p>hätte doch was ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417515</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Sun, 09 Dec 2007 12:30:13 GMT</pubDate></item><item><title><![CDATA[Reply to Operator [] für Pointer auf Objekt on Sun, 09 Dec 2007 12:41:38 GMT]]></title><description><![CDATA[<p>Hi, das hilft mir leider nicht weiter -- zumindest verstehe ich nicht ganz. Brauche ich noch eine zusätzliche Definition, um den Operator auf einen Pointer anwenden zu können?</p>
<p>Soweit ich das verstehe, unterscheiden sich deine Bsp. ja &quot;nur&quot; darin, ob sie die Werte verändern, oder nicht (das ganze zwei mal, vertauscht mit _First und _Second)?</p>
<p>lg, Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417522</guid><dc:creator><![CDATA[haimat]]></dc:creator><pubDate>Sun, 09 Dec 2007 12:41:38 GMT</pubDate></item><item><title><![CDATA[Reply to Operator [] für Pointer auf Objekt on Sun, 09 Dec 2007 13:03:28 GMT]]></title><description><![CDATA[<p>Du mußt dann erst dereferenzieren:</p>
<pre><code class="language-cpp">map&lt;int, double&gt; *pMap = ...;
double d = (*pMap][42]; // alternativ auch  pMap-&gt;operator[](42)
</code></pre>
<p>Edit:<br />
Ich bin jetzt von einer (konstanten) Referenz als Rückgabewert ausgegangen (Pointer sollte man in C++ sow wenig wie möglich benutzen).<br />
(D)Evil's Code unterscheidet sich nämlich diesbezüglich noch von deinem Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1417535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417535</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Sun, 09 Dec 2007 13:03:28 GMT</pubDate></item><item><title><![CDATA[Reply to Operator [] für Pointer auf Objekt on Sun, 09 Dec 2007 13:09:26 GMT]]></title><description><![CDATA[<p>besten Dank, genau das wars <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/1417539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1417539</guid><dc:creator><![CDATA[haimat]]></dc:creator><pubDate>Sun, 09 Dec 2007 13:09:26 GMT</pubDate></item></channel></rss>