<?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[&amp;lt;&amp;lt; und &amp;gt;&amp;gt;]]></title><description><![CDATA[<p>Hallo,<br />
ich wollte den istream operator überladen.<br />
Aber dabei bekomme ich folgenden Fehler:<br />
(217) : warning C4717: 'operator&gt;&gt;': Rekursiv für alle Steuerelementpfade. Die Funktion verursacht einen Stapelüberlauf zur Laufzeit.</p>
<p>Die Funktion:</p>
<pre><code class="language-cpp">ostream &amp;operator&lt;&lt;( ostream&amp; os, const Complex &amp;val )
{
	os &lt;&lt; val._real &lt;&lt; &quot;+&quot; &lt;&lt; val._image &lt;&lt; endl;
	return os;
}

istream &amp;operator&gt;&gt;( istream&amp; is, const Complex &amp;val )
{
	cout &lt;&lt; &quot;Real-Teil : &quot;;
	is &gt;&gt; val._real;
	cout &lt;&lt; &quot;Imaginärer Teil: &quot;;
	is &gt;&gt; val._image;
	return is;
}
</code></pre>
<p>die Klasse mit friend:</p>
<pre><code class="language-cpp">class Complex 
{
private:
   double _real;
   double _image;
public:
   Complex operator-() {
      return Complex( -_real, -_image );
   }
   Complex( double val1 = 0.0, double val2 = 0.0 ) {
      _real = val1;
	  _image = val2;
   }
   void print_Complex() {
      cout &lt;&lt; _real &lt;&lt; &quot;+&quot; &lt;&lt; _image &lt;&lt; endl;
   }
   friend Complex operator+( Complex v1, Complex v2 );
   Complex operator-( Complex val2 ) const {
      Complex tmp(*this);
	  tmp._real -= val2._real;
	  tmp._image -= val2._image;
	  return tmp;
   }
   friend Complex operator+( double val1, Complex val2 );
   Complex&amp; operator++() {
      _real++;
	  _image++;
	  cout &lt;&lt; &quot;Präfix ausgewählt &quot; &lt;&lt; endl;
	  return *this;
   }
   Complex&amp; operator++(int) {
      static Complex tmp(*this);
	  _real++;
	  _image++;
	  cout &lt;&lt; &quot;Postfix ausgewählt &quot; &lt;&lt; endl;
	  return tmp;
   }
      friend ostream &amp;operator&lt;&lt;( ostream&amp; os, const Complex &amp;val );
   friend istream &amp;operator&gt;&gt;( istream&amp; is, const Complex &amp;val );
};
</code></pre>
<p>test in int main:</p>
<pre><code class="language-cpp">Complex val11;
   cin &gt;&gt; val11;
   cout &lt;&lt; val11;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/216562/lt-lt-und-gt-gt</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 08:59:21 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216562.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 25 Jun 2008 12:48:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to &amp;lt;&amp;lt; und &amp;gt;&amp;gt; on Wed, 25 Jun 2008 12:48:07 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich wollte den istream operator überladen.<br />
Aber dabei bekomme ich folgenden Fehler:<br />
(217) : warning C4717: 'operator&gt;&gt;': Rekursiv für alle Steuerelementpfade. Die Funktion verursacht einen Stapelüberlauf zur Laufzeit.</p>
<p>Die Funktion:</p>
<pre><code class="language-cpp">ostream &amp;operator&lt;&lt;( ostream&amp; os, const Complex &amp;val )
{
	os &lt;&lt; val._real &lt;&lt; &quot;+&quot; &lt;&lt; val._image &lt;&lt; endl;
	return os;
}

istream &amp;operator&gt;&gt;( istream&amp; is, const Complex &amp;val )
{
	cout &lt;&lt; &quot;Real-Teil : &quot;;
	is &gt;&gt; val._real;
	cout &lt;&lt; &quot;Imaginärer Teil: &quot;;
	is &gt;&gt; val._image;
	return is;
}
</code></pre>
<p>die Klasse mit friend:</p>
<pre><code class="language-cpp">class Complex 
{
private:
   double _real;
   double _image;
public:
   Complex operator-() {
      return Complex( -_real, -_image );
   }
   Complex( double val1 = 0.0, double val2 = 0.0 ) {
      _real = val1;
	  _image = val2;
   }
   void print_Complex() {
      cout &lt;&lt; _real &lt;&lt; &quot;+&quot; &lt;&lt; _image &lt;&lt; endl;
   }
   friend Complex operator+( Complex v1, Complex v2 );
   Complex operator-( Complex val2 ) const {
      Complex tmp(*this);
	  tmp._real -= val2._real;
	  tmp._image -= val2._image;
	  return tmp;
   }
   friend Complex operator+( double val1, Complex val2 );
   Complex&amp; operator++() {
      _real++;
	  _image++;
	  cout &lt;&lt; &quot;Präfix ausgewählt &quot; &lt;&lt; endl;
	  return *this;
   }
   Complex&amp; operator++(int) {
      static Complex tmp(*this);
	  _real++;
	  _image++;
	  cout &lt;&lt; &quot;Postfix ausgewählt &quot; &lt;&lt; endl;
	  return tmp;
   }
      friend ostream &amp;operator&lt;&lt;( ostream&amp; os, const Complex &amp;val );
   friend istream &amp;operator&gt;&gt;( istream&amp; is, const Complex &amp;val );
};
</code></pre>
<p>test in int main:</p>
<pre><code class="language-cpp">Complex val11;
   cin &gt;&gt; val11;
   cout &lt;&lt; val11;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1535546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535546</guid><dc:creator><![CDATA[Fehler bei Überladung]]></dc:creator><pubDate>Wed, 25 Jun 2008 12:48:07 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;lt;&amp;lt; und &amp;gt;&amp;gt; on Wed, 25 Jun 2008 12:57:07 GMT]]></title><description><![CDATA[<p>warum gibt den die eingabefunkion etwas aus ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1535556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535556</guid><dc:creator><![CDATA[helferlein]]></dc:creator><pubDate>Wed, 25 Jun 2008 12:57:07 GMT</pubDate></item><item><title><![CDATA[Reply to &amp;lt;&amp;lt; und &amp;gt;&amp;gt; on Wed, 25 Jun 2008 12:59:37 GMT]]></title><description><![CDATA[<p>Fehler bei Überladung schrieb:</p>
<blockquote>
<p>(217) : warning C4717: 'operator&gt;&gt;': Rekursiv für alle Steuerelementpfade. Die Funktion verursacht einen Stapelüberlauf zur Laufzeit.</p>
</blockquote>
<p>liegt an der Signatur</p>
<pre><code class="language-cpp">istream &amp;operator&gt;&gt;( istream&amp; is, const Complex &amp;val )
</code></pre>
<p>das const beim rechten Operanden muss weg - mit dem const ist der rechte Operand in</p>
<pre><code class="language-cpp">is &gt;&gt; val._real;
</code></pre>
<p>natürlich ebenfalls konstant, damit kommt die normale Überladung mit dem Parameter double&amp; nicht mehr in Frage, wohl aber dein eigener Operator, da ja dank des Konstruktors double in Complex konvertierbar ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1535558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1535558</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 25 Jun 2008 12:59:37 GMT</pubDate></item></channel></rss>