<?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[Fehler beim Überladen mit Postfixschreibweise (++val)]]></title><description><![CDATA[<p>Das Beispiel aus dem Buch(Bücher) gibt ein undefiniertes Wert aus.<br />
class myComplex {<br />
private:<br />
double _real;<br />
double _image;</p>
<p>public:<br />
myComplex( double val1=0.0, double val2=0.0 ) {<br />
_real = val1; _image = val2;<br />
}</p>
<p>void print_Complex(){<br />
cout &lt;&lt; _real &lt;&lt; &quot;+&quot; &lt;&lt; _image &lt;&lt; &quot;\n&quot;;<br />
}</p>
<p>// Postfix-Operator ++<br />
myComplex&amp; operator++(int) {<br />
myComplex tmp(*this);<br />
_real++;<br />
_image++;</p>
<p>return tmp;<br />
}<br />
};</p>
<p>int main() {<br />
myComplex val1(1.1, 2.2);<br />
++val1;</p>
<p>cout &lt;&lt; &quot;Wert von val1: &quot;; val1.print_Complex();</p>
<p>val1++;<br />
cout &lt;&lt; &quot;Wert von val1: &quot;; (val1++).print_Complex();</p>
<p>val1++.print_Complex() schreibt eine Zufalszahl und nicht 3.1 + 4.2i<br />
Hat das mit dem neuen C++ Kompiler zu tun ? (Visual C++ 2008 Express Edition)<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/250416/fehler-beim-überladen-mit-postfixschreibweise-val</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 01:31:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/250416.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 17 Sep 2009 16:33:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler beim Überladen mit Postfixschreibweise (++val) on Thu, 17 Sep 2009 16:33:32 GMT]]></title><description><![CDATA[<p>Das Beispiel aus dem Buch(Bücher) gibt ein undefiniertes Wert aus.<br />
class myComplex {<br />
private:<br />
double _real;<br />
double _image;</p>
<p>public:<br />
myComplex( double val1=0.0, double val2=0.0 ) {<br />
_real = val1; _image = val2;<br />
}</p>
<p>void print_Complex(){<br />
cout &lt;&lt; _real &lt;&lt; &quot;+&quot; &lt;&lt; _image &lt;&lt; &quot;\n&quot;;<br />
}</p>
<p>// Postfix-Operator ++<br />
myComplex&amp; operator++(int) {<br />
myComplex tmp(*this);<br />
_real++;<br />
_image++;</p>
<p>return tmp;<br />
}<br />
};</p>
<p>int main() {<br />
myComplex val1(1.1, 2.2);<br />
++val1;</p>
<p>cout &lt;&lt; &quot;Wert von val1: &quot;; val1.print_Complex();</p>
<p>val1++;<br />
cout &lt;&lt; &quot;Wert von val1: &quot;; (val1++).print_Complex();</p>
<p>val1++.print_Complex() schreibt eine Zufalszahl und nicht 3.1 + 4.2i<br />
Hat das mit dem neuen C++ Kompiler zu tun ? (Visual C++ 2008 Express Edition)<br />
Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1780619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1780619</guid><dc:creator><![CDATA[rosic]]></dc:creator><pubDate>Thu, 17 Sep 2009 16:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Überladen mit Postfixschreibweise (++val) on Thu, 17 Sep 2009 16:35:10 GMT]]></title><description><![CDATA[<p>Eigentlich val++</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1780620</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1780620</guid><dc:creator><![CDATA[rosic]]></dc:creator><pubDate>Thu, 17 Sep 2009 16:35:10 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Überladen mit Postfixschreibweise (++val) on Thu, 17 Sep 2009 16:38:02 GMT]]></title><description><![CDATA[<p>Ist eine Fehlermeldung, ein cpp-Tag oder eine Frage zu viel verlangt? Naja, das Problem wird wohl bei print_Complex() liegen, da du auf eine Variable zugreifen möchtest, die nicht in deinem Scope liegt. Also entweder _real und _image private lassen und eine Getter()- bzw. Setter()-Methode schreiben oder die Variablen public machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1780623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1780623</guid><dc:creator><![CDATA[Kóyaánasqatsi]]></dc:creator><pubDate>Thu, 17 Sep 2009 16:38:02 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Überladen mit Postfixschreibweise (++val) on Thu, 17 Sep 2009 16:59:29 GMT]]></title><description><![CDATA[<p>Lösung ist ja nun schon genannt, aber du scheinst mehrere Fehler gemacht zu haben:</p>
<pre><code class="language-cpp">class myComplex
{
private: 
  double _real; 
  double _image; 
public: 
  myComplex(double val1=0.0, double val2=0.0) //sehr ungünstige variablennamen!
  { 
    _real = val1; _image = val2; 
  }
  void print_Complex()
  { 
    cout &lt;&lt; _real &lt;&lt; &quot; + &quot; &lt;&lt; _image &lt;&lt; &quot;i\n&quot;;
  } 

  // Präfix-Operator ++ 
  myComplex&amp; operator++()
  {
    ++_real;
    ++_image; //das hier hat iwie wenig mit mathematik zu tun, aber ok...
    return *this;
  }

  // Postfix-Operator ++ 
  myComplex operator++(int)
  { 
    myComplex NRVO(*this);
    ++*this; //wird über präfix-operator definiert
    return NRVO; 
  } 
};
</code></pre>
<pre><code class="language-cpp">/*main.cpp*/
int main()
{ 
  myComplex val1(1.1, 2.2); 
  ++val1; //2.1 + 3.2i

  cout &lt;&lt; &quot;Wert von val1: &quot;; //print 2.1 + 3.2i
  val1.print_Complex(); 

  val1++; //3.1 + 4.2i
  cout &lt;&lt; &quot;Wert von val1: &quot;;
  (val1++).print_Complex(); //print 3.1 + 4.2i
  //4.1 + 5.2i
}
</code></pre>
<p>bb</p>
<p>PS: Gäbe noch vieles, was man verbessern könnte, aber ich nehm mal an, du gehst gerade nen Tuturial / Buch durch!?</p>
<p>edit: <code>myComplex&amp; operator++(int)</code> -&gt; <code>myComplex operator++(int)</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1780624</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1780624</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 17 Sep 2009 16:59:29 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Überladen mit Postfixschreibweise (++val) on Thu, 17 Sep 2009 16:47:06 GMT]]></title><description><![CDATA[<p>Vielen Dank<br />
(habe in zwei Bücher die Beispiele abgeschrieben(Jürgen Wolf;Seite 369))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1780629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1780629</guid><dc:creator><![CDATA[rosic]]></dc:creator><pubDate>Thu, 17 Sep 2009 16:47:06 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Überladen mit Postfixschreibweise (++val) on Thu, 17 Sep 2009 16:51:01 GMT]]></title><description><![CDATA[<p>rosic schrieb:</p>
<blockquote>
<p>Vielen Dank<br />
(habe in zwei Bücher die Beispiele abgeschrieben(Jürgen Wolf;Seite 369))</p>
</blockquote>
<p>also verstehst du jetzt, wieso es nicht ging und wieso es so geht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1780631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1780631</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 17 Sep 2009 16:51:01 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Überladen mit Postfixschreibweise (++val) on Thu, 17 Sep 2009 16:52:47 GMT]]></title><description><![CDATA[<p>Einen Haken hat das Programm noch:</p>
<p>unskilled schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// Postfix-Operator ++ 
  myComplex&amp; operator++(int)
  { 
    myComplex NRVO(*this);
    ++*this; //wird über präfix-operator definiert
    return NRVO; 
  }
</code></pre>
</blockquote>
<p>Der Postfix-Increment-Operator sollte keine Referenz zurückgeben. Ich schätze, das ist bis jetzt übersehen worden.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1780632</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1780632</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Thu, 17 Sep 2009 16:52:47 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Überladen mit Postfixschreibweise (++val) on Thu, 17 Sep 2009 16:58:40 GMT]]></title><description><![CDATA[<p>Sebastian Pizer schrieb:</p>
<blockquote>
<p>Einen Haken hat das Programm noch:</p>
<p>unskilled schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// Postfix-Operator ++ 
  myComplex&amp; operator++(int)
  { 
    myComplex NRVO(*this);
    ++*this; //wird über präfix-operator definiert
    return NRVO; 
  }
</code></pre>
</blockquote>
<p>Der Postfix-Increment-Operator sollte keine Referenz zurückgeben. Ich schätze, das ist bis jetzt übersehen worden.</p>
<p>Gruß,<br />
SP</p>
</blockquote>
<p>Danke - richtig geraten ;o)<br />
habs geändert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1780635</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1780635</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 17 Sep 2009 16:58:40 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Überladen mit Postfixschreibweise (++val) on Thu, 17 Sep 2009 17:20:04 GMT]]></title><description><![CDATA[<p>Danke an Kóyaánasqatsi, unskilled und Sebastian Pizer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1780644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1780644</guid><dc:creator><![CDATA[rosic]]></dc:creator><pubDate>Thu, 17 Sep 2009 17:20:04 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler beim Überladen mit Postfixschreibweise (++val) on Fri, 18 Sep 2009 07:51:20 GMT]]></title><description><![CDATA[<p>rosic schrieb:</p>
<blockquote>
<p>(habe in zwei Bücher die Beispiele abgeschrieben(Jürgen Wolf;Seite 369))</p>
</blockquote>
<p>WTF, du hast recht... Vielleicht sollte man das Buch wirklich der Verbrennung zuführen...</p>
<p>Felix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1780825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1780825</guid><dc:creator><![CDATA[Phoemuex]]></dc:creator><pubDate>Fri, 18 Sep 2009 07:51:20 GMT</pubDate></item></channel></rss>