<?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[C++ Operator [] überladen]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>habe bei meiner Recherche leider nichts gefunden und brauche eure Hilfe.</p>
<p>Ich habe eine Klasse die einen STL vector&lt;float&gt; kapselt und soll von meiner Klasse den [] Operator überladen.</p>
<blockquote>
<p>Die Klasse soll den Index-Operator [] überladen, damit man auf die einzelnen Elemente des Vektors zugreifen kann. (Hinweis: Eine Funktion kann Referenzen zurückgeben)</p>
</blockquote>
<p>Vielen Dank für eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/310874/c-operator-überladen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 04 Aug 2026 00:32:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/310874.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Nov 2012 17:55:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 17:55:06 GMT]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>habe bei meiner Recherche leider nichts gefunden und brauche eure Hilfe.</p>
<p>Ich habe eine Klasse die einen STL vector&lt;float&gt; kapselt und soll von meiner Klasse den [] Operator überladen.</p>
<blockquote>
<p>Die Klasse soll den Index-Operator [] überladen, damit man auf die einzelnen Elemente des Vektors zugreifen kann. (Hinweis: Eine Funktion kann Referenzen zurückgeben)</p>
</blockquote>
<p>Vielen Dank für eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273153</guid><dc:creator><![CDATA[VRComputing]]></dc:creator><pubDate>Wed, 21 Nov 2012 17:55:06 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 18:02:41 GMT]]></title><description><![CDATA[<p>Und deine Frage ist? Operatorüberladung kennst du? Musst du eigentlich, sonst würdest du die Aufgabe nicht bekommen. Zur Not gibt es dazu einen ausführlichen im Magazin:<br />
<a href="http://www.c-plusplus.net/forum/f55" rel="nofollow">http://www.c-plusplus.net/forum/f55</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273155</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 21 Nov 2012 18:02:41 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 18:03:12 GMT]]></title><description><![CDATA[<pre><code>class MyClass
{
  std::vector&lt;float&gt; v_;

public:

  float&amp; operator [] (std::size_t i)
  {
    return v_[i];
  }

  const float&amp; operator [] (std::size_t i) const
  {
    return v_[i];
  }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2273156</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273156</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 21 Nov 2012 18:03:12 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 18:26:04 GMT]]></title><description><![CDATA[<p>scott meyer sagt in seinen büchern dazu, dass man den nicht kosntanten []-operator durch den konstanten implementieren soll, um sich die code verdopplung zu sparen aber trotzdem die const correctness zu wahren</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273164</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273164</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 21 Nov 2012 18:26:04 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 18:33:01 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>scott meyer sagt in seinen büchern dazu, dass man den nicht kosntanten []-operator durch den konstanten implementieren soll, um sich die code verdopplung zu sparen aber trotzdem die const correctness zu wahren</p>
</blockquote>
<p>Wie würde ich dann die Überladung aufrufen?<br />
Kann ich das überhaupt eindeutig machen? Eventuell könnte so doch eine Endlosschleife erzeugt werden? (je nach Compiler vermutlich)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273166</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Wed, 21 Nov 2012 18:33:01 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 18:45:23 GMT]]></title><description><![CDATA[<p>ja kann man, nein keine endlosschleife (weil ist ja eindeutig xD).</p>
<p>ich tippe hier einfach mal den orignalen code aus scott meyers &quot;effektive c++ programmieren&quot; ab, Tipp3, kapitel 1.3.2, seite 43 nach 3. auflage:</p>
<pre><code>class Textblock{
public:
    ...
    const char&amp; operator[](std::size_t position) const
    {
        ...
        ...
        ...
        return text[position];
    }

    char&amp; operator[](std::size_t position)
    {
        return const_cast&lt;char&amp;&gt;(static_cast&lt;const Textblock&amp;&gt;(*this)[position]);
    }
...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2273168</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273168</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 21 Nov 2012 18:45:23 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 18:51:43 GMT]]></title><description><![CDATA[<blockquote>
<pre><code>const char&amp;
</code></pre>
</blockquote>
<p>Wieso zum Teufel eine Const-Referenz auf einen <strong>Basisdatentyp</strong> bei einem Rückgabewert?<br />
Dann doch einfach gleich eine Kopie...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273172</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273172</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 21 Nov 2012 18:51:43 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 19:11:57 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<blockquote>
<pre><code>const char&amp;
</code></pre>
</blockquote>
<p>Wieso zum Teufel eine Const-Referenz auf einen <strong>Basisdatentyp</strong> bei einem Rückgabewert?<br />
Dann doch einfach gleich eine Kopie...</p>
</blockquote>
<p>Zum Beispiel weil man die Adresse des Elementes haben möchte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273176</guid><dc:creator><![CDATA[TyRoXx]]></dc:creator><pubDate>Wed, 21 Nov 2012 19:11:57 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 19:21:12 GMT]]></title><description><![CDATA[<p>wenn man ein einfaches beispiel machen will z.B.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273178</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 21 Nov 2012 19:21:12 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 19:27:00 GMT]]></title><description><![CDATA[<p>Okay, danke. Auch wenn es krüppelig aussieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273179</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Wed, 21 Nov 2012 19:27:00 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 19:33:27 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Wieso zum Teufel eine Const-Referenz auf einen <strong>Basisdatentyp</strong> bei einem Rückgabewert?<br />
Dann doch einfach gleich eine Kopie...</p>
</blockquote>
<p>Fail. <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/2273181</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273181</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 21 Nov 2012 19:33:27 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 20:02:39 GMT]]></title><description><![CDATA[<p>TyRoXx schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<blockquote>
<pre><code>const char&amp;
</code></pre>
</blockquote>
<p>Wieso zum Teufel eine Const-Referenz auf einen <strong>Basisdatentyp</strong> bei einem Rückgabewert?<br />
Dann doch einfach gleich eine Kopie...</p>
</blockquote>
<p>Zum Beispiel weil man die Adresse des Elementes haben möchte.</p>
</blockquote>
<p>Was zum Teufel willst du mit der Adresse einer konstanten Variable?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273191</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273191</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 21 Nov 2012 20:02:39 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 20:28:53 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Was zum Teufel willst du mit der Adresse einer konstanten Variable?</p>
</blockquote>
<p>Ist doch ganz klar:</p>
<pre><code class="language-cpp">(*(char*)(&amp;lolwat[22])) = 'C';
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2273204</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273204</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Wed, 21 Nov 2012 20:28:53 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 20:45:40 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Was zum Teufel willst du mit der Adresse einer konstanten Variable?</p>
</blockquote>
<p>Ist doch ganz klar:</p>
<pre><code class="language-cpp">(*(char*)(&amp;lolwat[22])) = 'C';
</code></pre>
</blockquote>
<p>Ich hoffe das ist jetzt nicht dein Ernst.</p>
<p>In einem konstanten Objekt sind auch alle Member (zumindest die, die nicht als <code>mutual</code> deklariert wurden) konstant.</p>
<p>Und der Standard sagt</p>
<blockquote>
<p>any attempt to modify a const object during its lifetime (3.8) results in undefined behavior</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/2273206</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273206</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 21 Nov 2012 20:45:40 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 20:53:52 GMT]]></title><description><![CDATA[<p>ok, ich änders</p>
<pre><code>template&lt;class T&gt;
class Foo {
public:
    ...
    const T&amp; operator[](std::size_t position) const
    {
        ...
        ...
        ...
        return vec[position];
    }

    T&amp; operator[](std::size_t position)
    {
        return const_cast&lt;T&amp;&gt;(static_cast&lt;const Foo&amp;&gt;(*this)[position]);
    }
...
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2273212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273212</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 21 Nov 2012 20:53:52 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 20:55:22 GMT]]></title><description><![CDATA[<p>Neh, ich will jetzt mal hören wieso das so viel Sinn macht. Von cooky seiner Majestät höchstpersönlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273214</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Wed, 21 Nov 2012 20:55:22 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 20:57:06 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Von cooky seiner Majestät höchstpersönlich.</p>
</blockquote>
<p>bow down before her !</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273216</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273216</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Wed, 21 Nov 2012 20:57:06 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 21:10:30 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Ich hoffe das ist jetzt nicht dein Ernst.</p>
</blockquote>
<p>Gut bemerkt <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/2273218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273218</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Wed, 21 Nov 2012 21:10:30 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 22:42:52 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Neh, ich will jetzt mal hören wieso das so viel Sinn macht. Von cooky seiner Majestät höchstpersönlich.</p>
</blockquote>
<p>Ich, der Kaiser des Universums, sage Euch, Sone, dass Ihr wieder mal mehr Mario Barth angucken solltet:</p>
<pre><code>void alte_c_funktion(const char* data, int N);

vector&lt;char&gt; foo(500);
// [...]
alte_c_funktion(&amp;foo[0], 500);
</code></pre>
<p>Hat wohl jeder schon 1000 Mal gebraucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273235</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Wed, 21 Nov 2012 22:42:52 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Wed, 21 Nov 2012 23:33:00 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>Neh, ich will jetzt mal hören wieso das so viel Sinn macht. Von cooky seiner Majestät höchstpersönlich.</p>
</blockquote>
<p>1. Konzeptuell modelliert ein vector, wie fast alles mit operator[], eine Art Arrayzugriff. In jedem fall möchte man mit [] auf ein Element selbst zugreifen - und das wird eben genau mit einer Referenz erreicht. Äquivalent steht dazu das Ziel von C++, Klassentypen als Built-In Typen zu behandeln. (Bei einem konstanten Array gibt es natürlich auch einen const&amp;.) Eine konstante Referenz ist also nur konsistent mit dem Rest der Sprache.</p>
<p>2. Praktisch gesehen willst du uU mal sowas:</p>
<pre><code>send(&amp;v[5], xyz);
</code></pre>
<p>Ja, man kann auch v.data() + 5 schreiben, aber da könnte man ja auch *(v.data() + 5) = 77 bei non-const schreiben. Der Punkt ist, dass das nicht das Verhalten ist, was man erwartet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273242</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273242</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Wed, 21 Nov 2012 23:33:00 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Thu, 22 Nov 2012 08:39:48 GMT]]></title><description><![CDATA[<p>Sone schrieb:</p>
<blockquote>
<p>In einem konstanten Objekt sind auch alle Member (zumindest die, die nicht als <code>mutual</code> deklariert wurden) konstant.</p>
<p>Und der Standard sagt</p>
<blockquote>
<p>any attempt to modify a const object during its lifetime (3.8) results in undefined behavior</p>
</blockquote>
</blockquote>
<p>Mal abgesehen davon, dass keiner ernsthaft das machen will, was liquidwave scherzhafterweise geschrieben hat, bist du hier auf dem Holzweg; denn</p>
<pre><code class="language-cpp">void ok(const char&amp; ref)
{
  const_cast&lt;char&amp;&gt;(ref) = 'y';
}

int main()
{
  char c = 'x';
  ok(c);
}
</code></pre>
<p>ist 100%ig legal, weil <code>c</code> <em>kein</em> &quot;const object&quot; ist. Nur weil du eine &quot;Referenz auf const&quot; oder &quot;Zeiger auf const&quot; hast, heißt das nicht, dass das referenzierte Objekt ein &quot;const Objekt&quot; ist. &quot;Const Objekte&quot; sind nur die, die schon mit einem <code>const</code> angelegt werden. Erst wenn du bei der Deklaration von <code>c</code> noch ein <code>const</code> davor schreibst, ist <code>c</code> ein &quot;const object&quot; und erst dann greift das, was du aus dem Standard zitiert hast. Bei einem vector&lt;char&gt; ist das sehr ähnlich. Die char-Objekte da drin sind keine &quot;const objects&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273294</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Thu, 22 Nov 2012 08:39:48 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Sat, 24 Nov 2012 17:21:34 GMT]]></title><description><![CDATA[<p>. (s. u., hat sich geklärt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273479</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273479</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Sat, 24 Nov 2012 17:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Thu, 22 Nov 2012 16:16:34 GMT]]></title><description><![CDATA[<p>Wo ist der Unterschied zwischen einem TextBlock und einem vector&lt;char&gt;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273481</guid><dc:creator><![CDATA[cooky451]]></dc:creator><pubDate>Thu, 22 Nov 2012 16:16:34 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Thu, 22 Nov 2012 16:46:13 GMT]]></title><description><![CDATA[<p>das war 1zu1 das beispiel aus dem meyers...<br />
der hat sein textblock beispiel schon öfters mal vorher benutztund auch eingeführt.</p>
<p>klar machst es bei den simplen datentypen wenig sinn. aber es ging um das prinzip, daher mein code mit dem template später.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273497</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Thu, 22 Nov 2012 16:46:13 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Thu, 22 Nov 2012 17:04:51 GMT]]></title><description><![CDATA[<p>cooky451 schrieb:</p>
<blockquote>
<p>Sone schrieb:</p>
<blockquote>
<p>Neh, ich will jetzt mal hören wieso das so viel Sinn macht. Von cooky seiner Majestät höchstpersönlich.</p>
</blockquote>
<p>1. Konzeptuell modelliert ein vector, wie fast alles mit operator[], eine Art Arrayzugriff. In jedem fall möchte man mit [] auf ein Element selbst zugreifen - und das wird eben genau mit einer Referenz erreicht. Äquivalent steht dazu das Ziel von C++, Klassentypen als Built-In Typen zu behandeln. (Bei einem konstanten Array gibt es natürlich auch einen const&amp;.) Eine konstante Referenz ist also nur konsistent mit dem Rest der Sprache.</p>
<p>2. Praktisch gesehen willst du uU mal sowas:</p>
<pre><code>send(&amp;v[5], xyz);
</code></pre>
<p>Ja, man kann auch v.data() + 5 schreiben, aber da könnte man ja auch *(v.data() + 5) = 77 bei non-const schreiben. Der Punkt ist, dass das nicht das Verhalten ist, was man erwartet.</p>
</blockquote>
<p>Hmm, zugegeben, wenn ich mir das so durchlese, sehe ich langsam ein dass du Recht hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2273505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2273505</guid><dc:creator><![CDATA[Sone]]></dc:creator><pubDate>Thu, 22 Nov 2012 17:04:51 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Operator [] überladen on Sat, 24 Nov 2012 17:03:13 GMT]]></title><description><![CDATA[<pre><code>template&lt;class T,std::size_t D&gt;
class Array
{
  vector&lt;T&gt;* vec;

  public:
  // 1. einen Konstruktor Vector() besitzen, der den Inhalt mit Nullen initialisiert
  Array()
  {
    this-&gt;vec = new vector&lt;T&gt;(D,0);
  }  

  public: 
  // 2. den Index-Operator [] überladen, damit man auf die einzelnen Elemente des Vektors zugreifen kann.
  T&amp; operator [] (std::size_t i) 
  { 
    return vec[i]; 
  } 

  public: 
  // 2. den Index-Operator [] überladen, damit man auf die einzelnen Elemente des Vektors zugreifen kann.
  const T&amp; operator [] (std::size_t i) const 
  { 
    return vec[i]; 
  }

  public:
  // 3. den Additionsoperator + überladen, so dass man mit den entsprechenden Aufrufen Vektoren addieren kann.
  Array&lt;T,D&gt;&amp; operator + (Array&lt;T,D&gt;&amp; input)
  {
    Array&lt;T,D&gt; temp;
    for(long i = 0; i &lt; D; i++)
      temp[i] = this[i] + input[i];
  }

  public:
  // 5. eine Funktion length() besitzen, die einem die Länge des Vektors (euklidische Norm) zurückgibt.
  long length()
  {
    double l = 0.0;
    for(long i = 0; i &lt; D; i++)
      l += pow(this[i],2);
    l = sqrt(l);

    return D;
  }

  public:
  // 6. eine Funktion print() besitzen, die den Inhalt des Vektors auf dem Bildschirm ausgibt.
  void print()
  {
    for(long i = 0; i &lt; D; i++)
      cout&lt;&lt;&quot;[&quot;&lt;&lt;*this[i]&lt;&lt;&quot;]&quot;;
    cout&lt;&lt;endl;
  }
};
</code></pre>
<p>Der vector <strong>vec</strong> soll direkt per []-Operator gelesen/beschrieben werden können. Wo ist mein Fehler?</p>
<p>Vielen Dank für Eure Hilfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2274260</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2274260</guid><dc:creator><![CDATA[VRComputing]]></dc:creator><pubDate>Sat, 24 Nov 2012 17:03:13 GMT</pubDate></item></channel></rss>