<?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[Überladen des Index Operator []]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin gerade dabei, eine Container Klasse für eine map zu schreiben, die ungefähr das können soll, wie die STL map Klasse auch. Unter anderem möchte ich hierfür auch den [] Operator überladen.</p>
<p>Dies funktioniert auch wunderbar, wenn ich den Operator dazu verwende, ein Element (Iterator) eines bestimmten Keys zu bekommen:</p>
<pre><code class="language-cpp">element = mymap[&quot;key&quot;];
</code></pre>
<p>Allerdings möchte ich das auch andersrum verwenden, sprich ich möchte den Wert eines Elements anhand eines bestimmten Keys neu zuweisen:</p>
<pre><code class="language-cpp">mymap[&quot;key&quot;] = &quot;new value&quot;;
</code></pre>
<p>Diese zweite Version des Aufrufs nun funktioniert nicht.<br />
Den Operator habe ich wie folgt überladen:</p>
<pre><code class="language-cpp">// ...
// deklaration in der klasse
Element&lt;T&gt; *operator[](std::string) const;
// ...
// operator overloading
template&lt;typename T&gt;
Element&lt;T&gt; *HashMap&lt;T&gt;::operator[](std::string k) const
{
  return this-&gt;getElement(k);
}
</code></pre>
<p>Tja, soweit bin ich gekommen.<br />
Hat jemand eine Idee, ich den gewünschten Effekt erreichen kann?</p>
<p>Grüsse und vielen Dank im Voraus, Matthias</p>
<p>PS: Achja, muss ich den = Operator dafür auch noch überladen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/200117/überladen-des-index-operator</link><generator>RSS for Node</generator><lastBuildDate>Sun, 04 Oct 2026 09:54:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/200117.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 10 Dec 2007 20:23:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Überladen des Index Operator [] on Mon, 10 Dec 2007 20:26:34 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich bin gerade dabei, eine Container Klasse für eine map zu schreiben, die ungefähr das können soll, wie die STL map Klasse auch. Unter anderem möchte ich hierfür auch den [] Operator überladen.</p>
<p>Dies funktioniert auch wunderbar, wenn ich den Operator dazu verwende, ein Element (Iterator) eines bestimmten Keys zu bekommen:</p>
<pre><code class="language-cpp">element = mymap[&quot;key&quot;];
</code></pre>
<p>Allerdings möchte ich das auch andersrum verwenden, sprich ich möchte den Wert eines Elements anhand eines bestimmten Keys neu zuweisen:</p>
<pre><code class="language-cpp">mymap[&quot;key&quot;] = &quot;new value&quot;;
</code></pre>
<p>Diese zweite Version des Aufrufs nun funktioniert nicht.<br />
Den Operator habe ich wie folgt überladen:</p>
<pre><code class="language-cpp">// ...
// deklaration in der klasse
Element&lt;T&gt; *operator[](std::string) const;
// ...
// operator overloading
template&lt;typename T&gt;
Element&lt;T&gt; *HashMap&lt;T&gt;::operator[](std::string k) const
{
  return this-&gt;getElement(k);
}
</code></pre>
<p>Tja, soweit bin ich gekommen.<br />
Hat jemand eine Idee, ich den gewünschten Effekt erreichen kann?</p>
<p>Grüsse und vielen Dank im Voraus, Matthias</p>
<p>PS: Achja, muss ich den = Operator dafür auch noch überladen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418410</guid><dc:creator><![CDATA[haimat]]></dc:creator><pubDate>Mon, 10 Dec 2007 20:26:34 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen des Index Operator [] on Mon, 10 Dec 2007 20:37:30 GMT]]></title><description><![CDATA[<p>jop, aber nicht für die Containerklasse, sondern für die Elementklasse</p>
<p>du könntest natürlich statt Element&lt;T&gt; auch einfach T zurückgeben,<br />
sofern das ein Standardtyp ist, dann brauchst du den = Opertaor nicht zu überladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418418</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Mon, 10 Dec 2007 20:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen des Index Operator [] on Mon, 10 Dec 2007 20:40:01 GMT]]></title><description><![CDATA[<p>Sorry, ich verstehe nicht ganz.<br />
Was muss ich tun, damit der [] Operator in beiden Varianten funktioniert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418422</guid><dc:creator><![CDATA[haimat]]></dc:creator><pubDate>Mon, 10 Dec 2007 20:40:01 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen des Index Operator [] on Mon, 10 Dec 2007 20:58:01 GMT]]></title><description><![CDATA[<p>Du gibst einen Zeiger zurück, Du musst aber eine Referenz zurückgeben. op= brauchst Du nicht zu überladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418432</guid><dc:creator><![CDATA[Konrad Rudolph]]></dc:creator><pubDate>Mon, 10 Dec 2007 20:58:01 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen des Index Operator [] on Mon, 10 Dec 2007 21:29:34 GMT]]></title><description><![CDATA[<p>ok, ich habe jetzt also zwei Definitionen:</p>
<pre><code class="language-cpp">Element&lt;T&gt;	*operator[](std::string) const;	// overloaded [] operator
Element&lt;T&gt;	&amp;operator[](const std::string);	// overloaded [] operator
</code></pre>
<p>Nun funktioniert aber der ursprüngliche Aufruf nicht mehr <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>
<p>Könnte mir vielleicht jemand etwas genauer erklären, was zu tun ist?<br />
Ich fürchte ich stehe etwas auf der Leitung.</p>
<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418444</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418444</guid><dc:creator><![CDATA[haimat]]></dc:creator><pubDate>Mon, 10 Dec 2007 21:29:34 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen des Index Operator [] on Mon, 10 Dec 2007 22:40:24 GMT]]></title><description><![CDATA[<p>Warum soll denn dein operator[] einen Zeiger zurückgeben?<br />
Normalerweise hat man hier einen non-const operator[], der eine Referenz zurückgibt, und einen const, der eine konstante Referenz zurückgibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418465</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Mon, 10 Dec 2007 22:40:24 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen des Index Operator [] on Mon, 10 Dec 2007 23:28:01 GMT]]></title><description><![CDATA[<p>ok, aber wie sieht dann die Zuweisung aus für:</p>
<pre><code class="language-cpp">Element&lt;std::string&gt; el = map[&quot;key&quot;];
Element&lt;std::string&gt; *el2 = map[&quot;key&quot;];
</code></pre>
<p>Mir ist klar, dass diese beiden Ausdrücke falsch sind.<br />
Ich versuche nur zu verdeutlichen, worauf ich hinaus will.</p>
<p>Und: Was muss dann der Operator zurück liefern?</p>
<pre><code class="language-cpp">return ???;
</code></pre>
<p>lg, Matthias</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418474</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418474</guid><dc:creator><![CDATA[haimat]]></dc:creator><pubDate>Mon, 10 Dec 2007 23:28:01 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen des Index Operator [] on Tue, 11 Dec 2007 06:49:29 GMT]]></title><description><![CDATA[<p>Deine Methodendefinitionen sind schon falsch (passen nicht zusammen) - und der Rückgabetyp wird bei der Überladungsauflösung gar nicht betrachtet. Besser sieht's so aus:</p>
<pre><code class="language-cpp">const Element&lt;T&gt;&amp; operator[](const string&amp;) const;
Element&lt;T&gt;&amp;       operator[](const string&amp;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1418504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418504</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 11 Dec 2007 06:49:29 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen des Index Operator [] on Tue, 11 Dec 2007 07:06:18 GMT]]></title><description><![CDATA[<p>Schiel doch mal in den map-header der STL-implementierung deines Compilerherstellers. Dann weißt du, wie die Signaturen aussehen könnten.<br />
Sonst siehe auch hier: <a href="http://www.cplusplus.com/reference/stl/map/" rel="nofollow">http://www.cplusplus.com/reference/stl/map/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1418507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1418507</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 11 Dec 2007 07:06:18 GMT</pubDate></item></channel></rss>