<?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 von mehrdimensionalem Vector]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab eine Klasse welche unter anderem ein pixel-Attribut als 2dim-Vector hat. Ich hab bereits Methoden zum Schreiben und Auslesen dieses Vecs geschrieben.</p>
<pre><code class="language-cpp">TMycl{
private: vector &lt; vector &lt;int&gt; &gt; pixel;
....
public:
setPixel(int x, int y, int val);
int getPixel(int x, int y);
</code></pre>
<p>Ich möchte aber nun das Attribut ueber einen []-Operator ansprechen</p>
<pre><code class="language-cpp">TMycl cl;
cl[0][0] // wert von pixel[0][0]
</code></pre>
<p>Ich hab bereits ein wenig rumprobiert</p>
<pre><code class="language-cpp">cl::operator [](int _x)
</code></pre>
<p>wusste ich noch dank der Borland-Hilfe, wie ich aber jetzt 2 Argumente uebergebe</p>
<pre><code class="language-cpp">cl::operator [][](int _x, int _y)
</code></pre>
<p>ist mir unbekannt. Wenn ich das probiere erhalte ich einen Compiler-Fehler. Welchen kann ich nicht sagen, hab auf diesem PC die IDE nicht vorhanden.</p>
<p>Ich hoffe aber mein Problem ist verständlich und freue mich über Anregungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207244/operator-von-mehrdimensionalem-vector</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 02:52:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207244.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Mar 2008 11:19:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operator von mehrdimensionalem Vector on Wed, 05 Mar 2008 11:19:37 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich hab eine Klasse welche unter anderem ein pixel-Attribut als 2dim-Vector hat. Ich hab bereits Methoden zum Schreiben und Auslesen dieses Vecs geschrieben.</p>
<pre><code class="language-cpp">TMycl{
private: vector &lt; vector &lt;int&gt; &gt; pixel;
....
public:
setPixel(int x, int y, int val);
int getPixel(int x, int y);
</code></pre>
<p>Ich möchte aber nun das Attribut ueber einen []-Operator ansprechen</p>
<pre><code class="language-cpp">TMycl cl;
cl[0][0] // wert von pixel[0][0]
</code></pre>
<p>Ich hab bereits ein wenig rumprobiert</p>
<pre><code class="language-cpp">cl::operator [](int _x)
</code></pre>
<p>wusste ich noch dank der Borland-Hilfe, wie ich aber jetzt 2 Argumente uebergebe</p>
<pre><code class="language-cpp">cl::operator [][](int _x, int _y)
</code></pre>
<p>ist mir unbekannt. Wenn ich das probiere erhalte ich einen Compiler-Fehler. Welchen kann ich nicht sagen, hab auf diesem PC die IDE nicht vorhanden.</p>
<p>Ich hoffe aber mein Problem ist verständlich und freue mich über Anregungen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468664</guid><dc:creator><![CDATA[cproc]]></dc:creator><pubDate>Wed, 05 Mar 2008 11:19:37 GMT</pubDate></item><item><title><![CDATA[Reply to Operator von mehrdimensionalem Vector on Wed, 05 Mar 2008 11:25:53 GMT]]></title><description><![CDATA[<p>Der Trick ist: du lässt operator[] ein Proxy Objekt liefern, dass selber einen operator[] hat.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468669</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 05 Mar 2008 11:25:53 GMT</pubDate></item><item><title><![CDATA[Reply to Operator von mehrdimensionalem Vector on Wed, 05 Mar 2008 11:38:08 GMT]]></title><description><![CDATA[<p>Hy,</p>
<p>also muss ich praktischen meinen Pixel nicht &quot;direkt&quot; definieren, sondern von einer Klasse und die Klasse hat als Methode wieder den []-operator?</p>
<p>Geht das vllt ein wenig geschmeidiger? ;-).<br />
Wäre klasse wenn noch ein paar Zeilen Code da wären.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468687</guid><dc:creator><![CDATA[cproc]]></dc:creator><pubDate>Wed, 05 Mar 2008 11:38:08 GMT</pubDate></item><item><title><![CDATA[Reply to Operator von mehrdimensionalem Vector on Wed, 05 Mar 2008 11:41:39 GMT]]></title><description><![CDATA[<p><div class="plugin-markdown"><input type="checkbox" id="checkbox40502" checked="true" /><label for="checkbox40502">zurückgeben.</label></div></p>
<p>Durch myPixel[x][y] hast du dann im Endeffekt (myPixel[x])[y].</p>
<p>Müsste klappen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468697</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Wed, 05 Mar 2008 11:41:39 GMT</pubDate></item><item><title><![CDATA[Reply to Operator von mehrdimensionalem Vector on Wed, 05 Mar 2008 11:53:23 GMT]]></title><description><![CDATA[<p>Klingt logisch, werde es heute ausprobieren und geb morgen bescheid.<br />
Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468707</guid><dc:creator><![CDATA[cproc]]></dc:creator><pubDate>Wed, 05 Mar 2008 11:53:23 GMT</pubDate></item><item><title><![CDATA[Reply to Operator von mehrdimensionalem Vector on Thu, 06 Mar 2008 08:23:21 GMT]]></title><description><![CDATA[<p>Hat soweit geklappt</p>
<pre><code class="language-cpp">vector &lt;int&gt;cl::operator [](int _x)
{
  return this-&gt;pixel[_x]
}
</code></pre>
<p>Macht das was ich wollte.</p>
<p>Ist es möglich, dass ich den selben Operator auch noch zum setzen von Werten benutzte?</p>
<pre><code class="language-cpp">cl[0][0] = 1;
</code></pre>
<p>Hab damit ein wenig rumgespielt und mir die Frage gestellt ob das überhaupt möglich ist, da ich ja hier wirklich 2 Werte übergeben muss!?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469159</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469159</guid><dc:creator><![CDATA[cproc]]></dc:creator><pubDate>Thu, 06 Mar 2008 08:23:21 GMT</pubDate></item><item><title><![CDATA[Reply to Operator von mehrdimensionalem Vector on Thu, 06 Mar 2008 08:35:29 GMT]]></title><description><![CDATA[<p>dein operator übergibt eine kopie des vectors zurück (was wohl ein bisschen unperformant werden könnte) - gib stattdessen eine referenz auf den vector zurück:</p>
<pre><code class="language-cpp">vector&lt;int&gt;&amp; cl::operator [](int x)
{
  return pixel[x];
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1469163</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469163</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Thu, 06 Mar 2008 08:35:29 GMT</pubDate></item><item><title><![CDATA[Reply to Operator von mehrdimensionalem Vector on Thu, 06 Mar 2008 08:42:17 GMT]]></title><description><![CDATA[<p>Und wenn du das mit der Referenz machst, sollte der Operatore auch einwandfrei zum Setzen von Werten geeignet sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469165</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469165</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Thu, 06 Mar 2008 08:42:17 GMT</pubDate></item><item><title><![CDATA[Reply to Operator von mehrdimensionalem Vector on Fri, 07 Mar 2008 07:14:58 GMT]]></title><description><![CDATA[<p>Ich hab den Code übernommen, hat aber nicht geklappt. Bekomme beim Setzen eine Exception. Habe zuvor aber den Vektor mit resize auf beiden Dimensionen bearbeitet. (Da ich hier keine IDE habe, kann ich die Exception jetzt nicht abschreiben).</p>
<p>Ich würde auch viel lieber, nicht einfach den Wert setzen, sondern ihn an eine Methode weitergeben. Also wenn ich den Wert ausgeben will (geht ja soweit Fehlerfrei) einfach die Ausgabe, beim Setzen, moechte ich SetPixel aufrufen, die u.a. überprüft ob der Wert über der size() des Vektors liegt und ihn dann ggf. noch vergrößert.<br />
Ist sowas möglich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469774</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469774</guid><dc:creator><![CDATA[cproc]]></dc:creator><pubDate>Fri, 07 Mar 2008 07:14:58 GMT</pubDate></item><item><title><![CDATA[Reply to Operator von mehrdimensionalem Vector on Fri, 07 Mar 2008 07:31:55 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">void setPixel(int x, int y, int value){
  if (pixel.size() &lt;= x) pixel.resize(x+1);
  if (pixel[x].size() &lt;= y) pixel[x].resize(y+1);
  pixel[x][y] = value;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1469783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469783</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 07 Mar 2008 07:31:55 GMT</pubDate></item><item><title><![CDATA[Reply to Operator von mehrdimensionalem Vector on Fri, 07 Mar 2008 16:40:48 GMT]]></title><description><![CDATA[<p>Hy Fellhuhn,</p>
<p>genau dass macht ja meine setpixel ;).</p>
<p>Es geht nur darum, dass wenn ich class[0][0] aufrufe soll er mir den Wert zurückgeben, wenn ich aber class[0][0] = 3 aufrufe soll er ueber die Methode setpixel den Wert speichern.<br />
Daher die Frage wie und ob sich das realisieren lässt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470147</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470147</guid><dc:creator><![CDATA[cproc]]></dc:creator><pubDate>Fri, 07 Mar 2008 16:40:48 GMT</pubDate></item><item><title><![CDATA[Reply to Operator von mehrdimensionalem Vector on Fri, 07 Mar 2008 17:08:40 GMT]]></title><description><![CDATA[<p>dafür brauchst du ein proxy-objekt. theoretisch sieht das in etwa so aus:</p>
<pre><code class="language-cpp">class Graphic
{
   vector&lt;vector&lt;int&gt; &gt; pixel;

public:
   class Proxy
   {
      Graphic&amp; parent;
      int x;

   public:
      Proxy (Graphic&amp; parent, int x) : parent(parent), x(x) {}

      int&amp; operator[] (int y)
      {
         parent.set_pixel(x, y);
         return parent.get_pixel(x, y);
      }
   };

   Proxy operator[] (int x) //zum modifizieren
   {
      return Proxy(*this, x);
   }
   vector&lt;int&gt; const&amp; operator[] (int x) const //zum reinen auslesen
   {
      return pixel[x];
   }

   void set_pixel (int x, int y); 
   int&amp; get_pixel (int x, int y);
};
//...
</code></pre>
<p>aber google mal danach, um vor- und nachteile von so etwas in erfahrung zu bringen.</p>
<p>/edit: beispiel vervollständigt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470157</guid><dc:creator><![CDATA[queer_boy]]></dc:creator><pubDate>Fri, 07 Mar 2008 17:08:40 GMT</pubDate></item></channel></rss>