<?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[[gelöst] C++ operator [] überladen]]></title><description><![CDATA[<p>Hey Community,</p>
<p>ich irgendwie gerade unfähig den operator [] richtig zu überladen.<br />
Mein Versuch bis jetzt :</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;
template &lt;typename T, int i&gt;
class MyArray {
private:
T* buffer;
public:
MyArray() {
buffer = new T[i];          
}
T operator[] (int number) {
return buffer[number];
}
};

int main() {
MyArray&lt;int,50&gt; iArray;
for(int iCount =0; iCount&lt;50; iCount++) {
iArray[iCount] = iCount*iCount;
cout&lt;&lt;iCount&lt;&lt;&quot;. : &quot;&lt;&lt;iArray[iCount]&lt;&lt;endl;
}
}
</code></pre>
<p>Führt mmt zur Fehlermeldung : &quot;non-Ivalue in assignment&quot;.<br />
Das sagt mir leider garnichts, deswegen komm ich auch nicht weiter .</p>
<p>Danke schonmal im Vorraus <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</p>
<p>Edit: Mein Problem wurde durch mehrere User gelöst <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>
]]></description><link>https://www.c-plusplus.net/forum/topic/276285/gelöst-c-operator-überladen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 11:30:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/276285.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 30 Oct 2010 11:58:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 20:13:48 GMT]]></title><description><![CDATA[<p>Hey Community,</p>
<p>ich irgendwie gerade unfähig den operator [] richtig zu überladen.<br />
Mein Versuch bis jetzt :</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

using namespace std;
template &lt;typename T, int i&gt;
class MyArray {
private:
T* buffer;
public:
MyArray() {
buffer = new T[i];          
}
T operator[] (int number) {
return buffer[number];
}
};

int main() {
MyArray&lt;int,50&gt; iArray;
for(int iCount =0; iCount&lt;50; iCount++) {
iArray[iCount] = iCount*iCount;
cout&lt;&lt;iCount&lt;&lt;&quot;. : &quot;&lt;&lt;iArray[iCount]&lt;&lt;endl;
}
}
</code></pre>
<p>Führt mmt zur Fehlermeldung : &quot;non-Ivalue in assignment&quot;.<br />
Das sagt mir leider garnichts, deswegen komm ich auch nicht weiter .</p>
<p>Danke schonmal im Vorraus <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</p>
<p>Edit: Mein Problem wurde durch mehrere User gelöst <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1972655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972655</guid><dc:creator><![CDATA[Felixxx]]></dc:creator><pubDate>Sat, 30 Oct 2010 20:13:48 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 12:04:26 GMT]]></title><description><![CDATA[<p>Der Operator [] sollte eine Referenz zurückgeben. Der Kopie, die du bei deinem jetzigen Code zurück gibst, kann man nichts zuweisen.</p>
<p>Übrigens: Es gibt hier auch ein C++-Forum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972657</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 30 Oct 2010 12:04:26 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 12:15:29 GMT]]></title><description><![CDATA[<p>Ok, Danke, ich werde es mal so versuchen.</p>
<p>Zu letzterem : Ja, mehrere sogar, aber in einem gehts irendwie nur um MFC und IDEs,in einem anderen nur um C++ Builder oder so, und im 3. können nur Moderatoren Threads erstellen. Habe ich irendwas übersehen ?</p>
<p>Edit : Meinst du mit der Referenz das ? :</p>
<pre><code class="language-cpp">T* operator[] (int number) {
return &amp;buffer[number];
}
</code></pre>
<p>So funktionierts auch leider nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p>Edit 2: Umpf nein. Referenz, ich bin dumm^^(T&amp; als return-wert) Ja so funktionierts, danke !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972659</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972659</guid><dc:creator><![CDATA[Felixxx]]></dc:creator><pubDate>Sat, 30 Oct 2010 12:15:29 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 12:15:07 GMT]]></title><description><![CDATA[<p>Guck mal richtig hin.<br />
Es gibt auch ein Forum das <strong>nur</strong> C++ heißt.<br />
Den Link kannste dir selber suchen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972661</guid><dc:creator><![CDATA[omfg]]></dc:creator><pubDate>Sat, 30 Oct 2010 12:15:07 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 12:15:26 GMT]]></title><description><![CDATA[<p>Am Besten ist es , diesen Operator einmal für den lesenden und für den schreibenden Zugriff zu definieren:</p>
<pre><code class="language-cpp">const T&amp; operator[] (int number) const;
      T&amp; operator[] (int number);
</code></pre>
<p>PS: <a href="http://www.c-plusplus.net/forum/viewforum.php?f=15&amp;sid=491bdb7e0266b18df692e7b52c9671d1" rel="nofollow">C++ Forum</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972662</guid><dc:creator><![CDATA[Vicious Falcon]]></dc:creator><pubDate>Sat, 30 Oct 2010 12:15:26 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 12:17:25 GMT]]></title><description><![CDATA[<p>Stimmt, das macht natürlich Sinn <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>Aaach, ich hatte auf Archiv/FAQ geklickt, logisch dass dort nur Moderatoren schreiben können <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_tongue"
      title=":P"
      alt="😛"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972664</guid><dc:creator><![CDATA[Felixxx]]></dc:creator><pubDate>Sat, 30 Oct 2010 12:17:25 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 12:27:48 GMT]]></title><description><![CDATA[<p>Zwei kleine Tipps noch:</p>
<p>1. i ist bei dir ne Konstante, also kannst auch direkt in der Klassendefiniton</p>
<pre><code class="language-cpp">T buffer[i]
</code></pre>
<p>schreiben. Somit sparst du dir das new.</p>
<p>2. Du erzeugst für jede einzelne Arraygröße eine neue Templateklasse. MyArray&lt;int,50&gt; ist eine Klasse und MyArray&lt;int,49&gt; ebenso. Daher nimm lieber den Build-In TemplateParameter raus und übergib ihn zB über den Konstruktor.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972670</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972670</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 30 Oct 2010 12:27:48 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 12:34:11 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-1819.html" rel="nofollow">rüdiger</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-8.html" rel="nofollow">Rund um die Programmierung</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972672</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sat, 30 Oct 2010 12:34:11 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 14:09:14 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Zwei kleine Tipps noch:</p>
<p>1. i ist bei dir ne Konstante, also kannst auch direkt in der Klassendefiniton</p>
<pre><code class="language-cpp">T buffer[i]
</code></pre>
<p>schreiben. Somit sparst du dir das new.</p>
<p>2. Du erzeugst für jede einzelne Arraygröße eine neue Templateklasse. MyArray&lt;int,50&gt; ist eine Klasse und MyArray&lt;int,49&gt; ebenso. Daher nimm lieber den Build-In TemplateParameter raus und übergib ihn zB über den Konstruktor.</p>
</blockquote>
<p>Entweder 1 oder 2. Leider nicht beides.<br />
Ich mag 1 sehr gern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972707</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 30 Oct 2010 14:09:14 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 14:09:24 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Zwei kleine Tipps noch:</p>
<p>1. i ist bei dir ne Konstante, also kannst auch direkt in der Klassendefiniton</p>
<pre><code class="language-cpp">T buffer[i]
</code></pre>
<p>schreiben. Somit sparst du dir das new.</p>
</blockquote>
<p>Stimmt eig., ich dachte nur, dass es schöner ist, es mit Konstruktor zu erzeugen^^</p>
<p>KasF schrieb:</p>
<blockquote>
<p>2. Du erzeugst für jede einzelne Arraygröße eine neue Templateklasse. MyArray&lt;int,50&gt; ist eine Klasse und MyArray&lt;int,49&gt; ebenso. Daher nimm lieber den Build-In TemplateParameter raus und übergib ihn zB über den Konstruktor.</p>
</blockquote>
<p>Hmm kannst du ein konkrets Beispiel geben ? Ich weiß nicht genau, wie du die Umsetzung meinst ^^</p>
<p>Obwohl ...<br />
Meinst du : Konstruktor : MyArray(int size) { buffer = new T[size] }</p>
<p>Das ist natürlich besser ^^ Dank dir !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972708</guid><dc:creator><![CDATA[Felixxx]]></dc:creator><pubDate>Sat, 30 Oct 2010 14:09:24 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 16:45:31 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Entweder 1 oder 2. Leider nicht beides.</p>
</blockquote>
<p>I know <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>Kannst du dich daran erinnern, gaaaanz ganz früher. Da hast du mir 2 beigebracht und ich habe es bis heute nicht vergessen <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>Edit: Hier <a href="http://www.c-plusplus.net/forum/viewtopic-var-p-is-779759.html#779759" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-p-is-779759.html#779759</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972767</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 30 Oct 2010 16:45:31 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 17:16:24 GMT]]></title><description><![CDATA[<p>Haha cooler Thread damals.<br />
Dürfte ich wissen was damals mit dem ExceptionHandeling so falsch war ?<br />
Ist doch eigentlich garnichts dran auszusetzten o.0</p>
<p>Außerdem, welche Methode ist jetzt besser ? 1. oder 2. ? Ich denke doch mal 2. ?<br />
Den Destruktor sollte ich auchnoch verändern, delte [] buffer; sollte da rein ^^</p>
<p>Auf jeden Fall Danke nochmal für die Optimierungsvorschläge <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="🙂"
    /><br />
Mfg<br />
und schönen Abend noch !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972780</guid><dc:creator><![CDATA[Felixxx]]></dc:creator><pubDate>Sat, 30 Oct 2010 17:16:24 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 20:19:24 GMT]]></title><description><![CDATA[<p>Felixxx schrieb:</p>
<blockquote>
<p>Haha cooler Thread damals.<br />
Dürfte ich wissen was damals mit dem ExceptionHandeling so falsch war ?<br />
Ist doch eigentlich garnichts dran auszusetzten o.0</p>
</blockquote>
<p>Meinst Du das?<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-108478-and-postdays-is-0-and-postorder-is-asc-and-start-is-46.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-108478-and-postdays-is-0-and-postorder-is-asc-and-start-is-46.html</a></p>
<p>Oder daß man bei Programmierfehlern nicht nur throw machen soll?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972783</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 30 Oct 2010 20:19:24 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 17:40:26 GMT]]></title><description><![CDATA[<p>template &lt;class typ,int size&gt; const typ &amp;MyArray&lt;typ,size&gt;::operator[](unsigned int i) const<br />
{<br />
if(i&lt;aktSize)<br />
return array[i];<br />
else<br />
throw out_of_range(&quot;Out of Range !!!&quot;);</p>
<p>}</p>
<p>1. &quot;was soll das denn? das widerstebt mir. irgendwas ist da ganz komisch.&quot;<br />
2. &quot;das widerstebt mir wirklich. irgendwas ist da wirklich ganz komisch.<br />
das klint so, als wolle man programmierfehler zur laufzeit fangen und heilen&quot;</p>
<p>Hast Du damals zu diesem Code geschrieben, verstehe nicht was Du damals meintest o.0 Was Dir daran so widerstrebte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972790</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972790</guid><dc:creator><![CDATA[Felixxx]]></dc:creator><pubDate>Sat, 30 Oct 2010 17:40:26 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 18:11:18 GMT]]></title><description><![CDATA[<p>Felixxx schrieb:</p>
<blockquote>
<p>Hast Du damals zu diesem Code geschrieben, verstehe nicht was Du damals meintest o.0 Was Dir daran so widerstrebte.</p>
</blockquote>
<p>Der Fehler passiert eigentlich nur, wenn man woanders unsauber programmiert. Ich gehe sogar soweit, zu sagen, daß in einem ordentlichen Programm der Fehler niemals fliegt. Also ist das if da nutzlos. Allenfalls zum Debuggen mag es hilfreich sein. Aber dafür gibt es stärkere Sachen als throw.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972807</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sat, 30 Oct 2010 18:11:18 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] C++ operator [] überladen on Sat, 30 Oct 2010 20:15:14 GMT]]></title><description><![CDATA[<p>Ok, klingt logisch <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>An dieser Stelle nochmal Danke an alle Beteiligten und ich wünsche noch einen schönen Abend !</p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1972851</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1972851</guid><dc:creator><![CDATA[Felixxx]]></dc:creator><pubDate>Sat, 30 Oct 2010 20:15:14 GMT</pubDate></item></channel></rss>