<?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[Operatoren überladen ([][])]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>hoffe Ihr könnt mir helfen. Ist es möglich einer Klasse einen Operator mitzugeben der nach dem Prinzip eines zweidimensionalen Array funktioniert? Zum Beispiel irgendwie so ...</p>
<pre><code class="language-cpp">int operator[][] (int x, int y);
</code></pre>
<p>Da es so nicht funktioniert habe ich es so versucht, kam allerdings auch nicht 100% zu meinem Ziel..</p>
<p>Hauptklasse :</p>
<pre><code class="language-cpp">YKlasse operator[] (int x);
</code></pre>
<p>Y Klasse :</p>
<pre><code class="language-cpp">int operator[] (int y);
</code></pre>
<p>...</p>
<p>hat jemand eine Idee wie man sowas realisieren könnte ...</p>
<p>Bin für jeden Tip dankbar...</p>
<p>Gruß Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/150451/operatoren-überladen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 18:23:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/150451.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 16 Jun 2006 15:03:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operatoren überladen ([][]) on Fri, 16 Jun 2006 15:03:23 GMT]]></title><description><![CDATA[<p>Hallo Zusammen,</p>
<p>hoffe Ihr könnt mir helfen. Ist es möglich einer Klasse einen Operator mitzugeben der nach dem Prinzip eines zweidimensionalen Array funktioniert? Zum Beispiel irgendwie so ...</p>
<pre><code class="language-cpp">int operator[][] (int x, int y);
</code></pre>
<p>Da es so nicht funktioniert habe ich es so versucht, kam allerdings auch nicht 100% zu meinem Ziel..</p>
<p>Hauptklasse :</p>
<pre><code class="language-cpp">YKlasse operator[] (int x);
</code></pre>
<p>Y Klasse :</p>
<pre><code class="language-cpp">int operator[] (int y);
</code></pre>
<p>...</p>
<p>hat jemand eine Idee wie man sowas realisieren könnte ...</p>
<p>Bin für jeden Tip dankbar...</p>
<p>Gruß Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1078997</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1078997</guid><dc:creator><![CDATA[PeterK]]></dc:creator><pubDate>Fri, 16 Jun 2006 15:03:23 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen ([][]) on Fri, 16 Jun 2006 15:10:14 GMT]]></title><description><![CDATA[<p>Das sollte so schon gehen. Du solltest bei der nichtkonstanten Operatorversion aber besser eine Referenz zurückgeben. Was ging denn nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079002</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079002</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 16 Jun 2006 15:10:14 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen ([][]) on Fri, 16 Jun 2006 15:10:59 GMT]]></title><description><![CDATA[<p>FAQ.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079003</guid><dc:creator><![CDATA[...........]]></dc:creator><pubDate>Fri, 16 Jun 2006 15:10:59 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen ([][]) on Fri, 16 Jun 2006 15:11:17 GMT]]></title><description><![CDATA[<p>Doch, dein Ansatz ist korrekt und die gängige Methode dieses Problem zu lösen.</p>
<p>Du kannst keine eigenen Operatoren ala [][] definiern sondern nur die vorgegeben verwenden -&gt; eben op[].</p>
<p>Wo genau scheitert es denn bei dir? Dein op[] liefert ein Proxy Objekt dass selber einen op[] anbietet und dann den passenden int liefert.</p>
<p>am primitivsten wäre das zB so lösbar:</p>
<pre><code class="language-cpp">class Proxy {
private:
  Array* obj;
  int x;
public:
  Proxy(Array* obj, int x)
  : obj(obj), x(x)
  {}
  int&amp; operator[](int y) {
    return obj-&gt;get(x,y);
  }
};
</code></pre>
<p>und Array würde im op[] dann einfach nur</p>
<pre><code class="language-cpp">return Proxy(this, x);
</code></pre>
<p>machen.</p>
<p>primitive lösung die uU reicht <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>je nachdem was du mit dem proxy objekt noch alles machen willst.</p>
<p>alternativ wäre ein operator() möglich, wobei man hier halt eine andere syntax hat - das ist meist unpassend. und es gibt immernoch die möglichkeit eine methode get() anzubieten...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079004</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Fri, 16 Jun 2006 15:11:17 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen ([][]) on Fri, 16 Jun 2006 21:26:09 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Danke schon mal für die Antworten!</p>
<p>Ich hab meinen Ansatz mit Euren Antworten mal ein wenig verbessert, bekomme das ganze aber leider nicht durch compiliert. in beiden Operatoren Fkts meckert er, dass versucht wird eine Referenz an ein lokales Object (beim Proxy) bzw. eine lokale Variable (beim eigentlichen Wert) zurück zugeben.</p>
<p>die beiden Op funktionen sehen jetzt so aus</p>
<pre><code class="language-cpp">CECTableProxy&amp; CECTableData::operator[](int x)
{
   return CECTableProxy(this, x);
}
string&amp; CECTableProxy::operator[](int y)
{
   return __owner-&gt;GetValue(x, y);
}
</code></pre>
<p>Gruß Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079189</guid><dc:creator><![CDATA[PeterK]]></dc:creator><pubDate>Fri, 16 Jun 2006 21:26:09 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen ([][]) on Fri, 16 Jun 2006 21:58:04 GMT]]></title><description><![CDATA[<p>PeterK schrieb:</p>
<blockquote>
<p>Hallo,</p>
<p>Danke schon mal für die Antworten!</p>
<p>Ich hab meinen Ansatz mit Euren Antworten mal ein wenig verbessert, bekomme das ganze aber leider nicht durch compiliert. in beiden Operatoren Fkts meckert er, dass versucht wird eine Referenz an ein lokales Object (beim Proxy) bzw. eine lokale Variable (beim eigentlichen Wert) zurück zugeben.</p>
<p>die beiden Op funktionen sehen jetzt so aus</p>
<pre><code class="language-cpp">CECTableProxy&amp; CECTableData::operator[](int x)
{
   return CECTableProxy(this, x);
}
string&amp; CECTableProxy::operator[](int y)
{
   return __owner-&gt;GetValue(x, y);
}
</code></pre>
<p>Gruß Peter</p>
</blockquote>
<p>das proxy darf nat. auch keine referenz sein. beim proxy wiederum kannst du nur dann eine referenz zurückgeben, galls GetValue eine referenz zurückgibt. im übrigen sind bezeichner mit doppeltem unterstrich reserviert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079200</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079200</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 16 Jun 2006 21:58:04 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen ([][]) on Fri, 16 Jun 2006 22:12:34 GMT]]></title><description><![CDATA[<p>ok ich habs jetzt hinbekommen nachdem ich ein objekt vom proxy anlegen und GetValue wieder freigebe allerding klappt die zuweisung immer noch nicht <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>
<pre><code class="language-cpp">CECTableProxy&amp; CECTableData::operator[](int x)
{
   this-&gt;tpTemp = new CECTableProxy(this, x);

   return *tpTemp;
}
string&amp; CECTableProxy::operator[](int y)
{
   return __owner-&gt;GetValue(x, y);
}
string&amp; CECTableData::GetValue(int iX, int iY)
{
   delete this-&gt;tpTemp;

   return this-&gt;m_Grid[iX][iY];
}
</code></pre>
<p>wenn ich jetzt eine zuweisung alla</p>
<pre><code class="language-cpp">string s = obj[0][0];
</code></pre>
<p>versuche, meint er &quot;Keine Übereinstimmung von string::operator =(CECTableProxy) gefunden&quot;</p>
<p>wie kann ich erreichen, dass erst die beiden operatoren aufgelöst werden bevor die zuweisung an s durchgeführt wird ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079203</guid><dc:creator><![CDATA[PeterK]]></dc:creator><pubDate>Fri, 16 Jun 2006 22:12:34 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen ([][]) on Fri, 16 Jun 2006 22:17:43 GMT]]></title><description><![CDATA[<p>@ camper,</p>
<p>danke für den hinweis, ist ohne Ref. schöner dann kann ich mir auch das erzeugen von meinem temp obj wieder sparen....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079204</guid><dc:creator><![CDATA[PeterK]]></dc:creator><pubDate>Fri, 16 Jun 2006 22:17:43 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen ([][]) on Fri, 16 Jun 2006 22:22:09 GMT]]></title><description><![CDATA[<p>und ein letztes kommentar zum thema für heut abend...</p>
<p>ich habe festgestellt, dass es funktioniert wenn ich die zuweisung so durchführe</p>
<pre><code class="language-cpp">s = tab-&gt;operator [](0).operator [](0);
</code></pre>
<p>so nicht ...</p>
<pre><code class="language-cpp">s = tab[0][0];
</code></pre>
<p>was mach ich da noch falsch ?</p>
<p>Schönen Abend noch Gruß Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079207</guid><dc:creator><![CDATA[PeterK]]></dc:creator><pubDate>Fri, 16 Jun 2006 22:22:09 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen ([][]) on Fri, 16 Jun 2006 22:46:37 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>also was dein letztes Beispiel betrifft, wundere ich mich jedenfalls darüber, dass du tab-&gt;operator[](0) sagst und unten einfach tab[0], da würde für mich (*tab)[0] mehr Sinn machen. <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>
<p>MfG Eisflamme</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079216</guid><dc:creator><![CDATA[Mis2com]]></dc:creator><pubDate>Fri, 16 Jun 2006 22:46:37 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen ([][]) on Sat, 17 Jun 2006 13:22:42 GMT]]></title><description><![CDATA[<p>ja so gehts auch, ich möchte es aber so ansprechen können ...</p>
<p>xy = tab[0][0];</p>
<p>was muss ich da ändern</p>
<p>Gruß Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079484</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079484</guid><dc:creator><![CDATA[PeterK]]></dc:creator><pubDate>Sat, 17 Jun 2006 13:22:42 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen ([][]) on Sat, 17 Jun 2006 13:30:56 GMT]]></title><description><![CDATA[<p>PeterK schrieb:</p>
<blockquote>
<p>ja so gehts auch, ich möchte es aber so ansprechen können ...</p>
<p>xy = tab[0][0];</p>
<p>was muss ich da ändern</p>
</blockquote>
<p>tab darf kein zeiger sein.</p>
<p>denn tab[0] ist einfach (*tab) erstmal ne dereferenzierung und somit ist tab[0] das tab objekt selber.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079495</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Sat, 17 Jun 2006 13:30:56 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen ([][]) on Sat, 17 Jun 2006 15:18:45 GMT]]></title><description><![CDATA[<p>Danke,</p>
<p>jetzt bin ich durchgestiegen.</p>
<p>Gruß Peter</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1079563</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1079563</guid><dc:creator><![CDATA[PeterK]]></dc:creator><pubDate>Sat, 17 Jun 2006 15:18:45 GMT</pubDate></item><item><title><![CDATA[Reply to Operatoren überladen ([][]) on Sun, 18 Jun 2006 13:35:33 GMT]]></title><description><![CDATA[<p>PeterK schrieb:</p>
<blockquote>
<p>ja so gehts auch, ich möchte es aber so ansprechen können ...</p>
<p>xy = tab[0][0];</p>
</blockquote>
<p>Wie wärs, wenn du aus dem Zeiger vorher eine Referenz machst.</p>
<pre><code class="language-cpp">CECTableData&amp; table = *tab;
xy = table[0][0];
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1080014</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1080014</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sun, 18 Jun 2006 13:35:33 GMT</pubDate></item></channel></rss>