<?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++ Komplexe Zahlen Klasse]]></title><description><![CDATA[<p>Hallo zusammen <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 />
ich muss zur Zeit ein Programm in C++ schreiben und nutze dafür Microsoft Visual Studios 2008.<br />
Das Programm welches ich schreibe dient zur Berechnung von komplexen Zahlen, doch leider komme ich mit den Operatoren nicht zurecht! -.-</p>
<p>Headerfile: komplexe zahlen.h</p>
<pre><code class="language-cpp">class Complex
{
public:
	Complex(double r, double i)
	{
		m_real = r;
		m_imag = i;
	}
	~Complex (){};

	const std::string Complex::toStdString() const
	{
		std::ostringstream os;
		os &lt;&lt; m_real &lt;&lt; &quot; + &quot; &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;

		if (m_real == 0)
		{
			os &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;
		}

		if (m_imag == 0)
		{
			os &lt;&lt; m_real;
		}

		if (m_imag &lt; 0)
		{
			os &lt;&lt; m_real &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;
		}

		return os.str();

	}

	std::ostream&amp; operator &lt;&lt; (std::ostream&amp; os, const Complex &amp;o)
	{
		return os &lt;&lt; o.toStdString();
	}

	Complex operator + (const Complex &amp;o)
	{	
		return Complex(o.m_real + m_real, o.m_imag + m_imag);
	}

	Complex operator - (const Complex &amp;o)
	{
		return Complex(o.m_real - m_real, o.m_imag - m_imag);
	}

	Complex operator * (const Complex &amp;o)
	{
		return Complex((o.m_real * m_real) - (o.m_imag * m_imag), (o.m_real * m_imag) + (o.m_imag * m_real));
	}

	Complex operator / (const Complex &amp;o)
	{
		return Complex(((o.m_real * m_real) + (o.m_imag * m_imag)) /((m_real * m_real) + (m_imag * m_imag)),
			((o.m_imag * m_real) - (o.m_real * m_imag)) / (( m_real * m_real) + (m_imag * m_imag)));
	}

	/*
	Complex operator| (const Complex &amp;o)
	{
		return Complex (sqrt((o.m_real * o.m_real) + (o.m_imag * o.m_imag)));
	}
	*/

private:
double m_real, m_imag;

//protected:

};
</code></pre>
<p>Mainfile : Main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;komplexe zahlen.h&quot;
using namespace std;

int main(int argc, char *argv[])
{

	Complex z1 (5.0, 3.54);
	Complex z2 (2.5, -3.54);
	Complex z3 = z1 + z2;
	Complex z4 = z1 - z2;
	Complex z5 = z1 * z2;
	Complex z6 = z1 / z2;
	//cout &lt;&lt; z3 &lt;&lt; endl;    

        system(&quot;pause&quot;);
	return 0;

}
</code></pre>
<p>Ich brauche Hilfe beim Umschreiben der Headerfile, damit ich in der Mainfile &quot;z3&quot; ausgeben kann.<br />
Ich danke schon mal im voraus für eure Vorschläge</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/304645/c-komplexe-zahlen-klasse</link><generator>RSS for Node</generator><lastBuildDate>Sun, 09 Aug 2026 10:04:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/304645.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 11 Jun 2012 12:59:59 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 13:17:18 GMT]]></title><description><![CDATA[<p>Hallo zusammen <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 />
ich muss zur Zeit ein Programm in C++ schreiben und nutze dafür Microsoft Visual Studios 2008.<br />
Das Programm welches ich schreibe dient zur Berechnung von komplexen Zahlen, doch leider komme ich mit den Operatoren nicht zurecht! -.-</p>
<p>Headerfile: komplexe zahlen.h</p>
<pre><code class="language-cpp">class Complex
{
public:
	Complex(double r, double i)
	{
		m_real = r;
		m_imag = i;
	}
	~Complex (){};

	const std::string Complex::toStdString() const
	{
		std::ostringstream os;
		os &lt;&lt; m_real &lt;&lt; &quot; + &quot; &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;

		if (m_real == 0)
		{
			os &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;
		}

		if (m_imag == 0)
		{
			os &lt;&lt; m_real;
		}

		if (m_imag &lt; 0)
		{
			os &lt;&lt; m_real &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;
		}

		return os.str();

	}

	std::ostream&amp; operator &lt;&lt; (std::ostream&amp; os, const Complex &amp;o)
	{
		return os &lt;&lt; o.toStdString();
	}

	Complex operator + (const Complex &amp;o)
	{	
		return Complex(o.m_real + m_real, o.m_imag + m_imag);
	}

	Complex operator - (const Complex &amp;o)
	{
		return Complex(o.m_real - m_real, o.m_imag - m_imag);
	}

	Complex operator * (const Complex &amp;o)
	{
		return Complex((o.m_real * m_real) - (o.m_imag * m_imag), (o.m_real * m_imag) + (o.m_imag * m_real));
	}

	Complex operator / (const Complex &amp;o)
	{
		return Complex(((o.m_real * m_real) + (o.m_imag * m_imag)) /((m_real * m_real) + (m_imag * m_imag)),
			((o.m_imag * m_real) - (o.m_real * m_imag)) / (( m_real * m_real) + (m_imag * m_imag)));
	}

	/*
	Complex operator| (const Complex &amp;o)
	{
		return Complex (sqrt((o.m_real * o.m_real) + (o.m_imag * o.m_imag)));
	}
	*/

private:
double m_real, m_imag;

//protected:

};
</code></pre>
<p>Mainfile : Main.cpp</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;komplexe zahlen.h&quot;
using namespace std;

int main(int argc, char *argv[])
{

	Complex z1 (5.0, 3.54);
	Complex z2 (2.5, -3.54);
	Complex z3 = z1 + z2;
	Complex z4 = z1 - z2;
	Complex z5 = z1 * z2;
	Complex z6 = z1 / z2;
	//cout &lt;&lt; z3 &lt;&lt; endl;    

        system(&quot;pause&quot;);
	return 0;

}
</code></pre>
<p>Ich brauche Hilfe beim Umschreiben der Headerfile, damit ich in der Mainfile &quot;z3&quot; ausgeben kann.<br />
Ich danke schon mal im voraus für eure Vorschläge</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222003</guid><dc:creator><![CDATA[scanbot90]]></dc:creator><pubDate>Mon, 11 Jun 2012 13:17:18 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 13:09:49 GMT]]></title><description><![CDATA[<p>DU kannst auch einfach <code>std::complex</code> benutzen. So wie ich das hier sehe bist du eher Anfaenger in C++. Da hilft in erster Linie ein gutes Buch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222005</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Mon, 11 Jun 2012 13:09:49 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 13:14:05 GMT]]></title><description><![CDATA[<p>Ja du hast recht, ich bin Anfänger aber muss mich aufgrund meines Praktikums damit auseinander setzten.. Leider habe ich ein Dato bekommen um dieses Programm fertig zu stellen (18.06.12) und ersuche deshalb Hilfe in diesem Forum <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2222008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222008</guid><dc:creator><![CDATA[scanbot90]]></dc:creator><pubDate>Mon, 11 Jun 2012 13:14:05 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 13:16:10 GMT]]></title><description><![CDATA[<p>Was bedeutet &quot;komme nicht zurecht&quot;? Stürzt dein Programm ab? Liefert es falsche Ergebnisse? Liefert dein Compiler Fehlermeldungen? Wenn ja, welche?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222009</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Mon, 11 Jun 2012 13:16:10 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 13:20:52 GMT]]></title><description><![CDATA[<p>Schau mal ins Magazin, ich glaube es war Januar 2009, da gibts einen Artikel über Operatorüberladung. Vielleicht hilft das weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222011</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222011</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 11 Jun 2012 13:20:52 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 13:23:47 GMT]]></title><description><![CDATA[<p>Du musst den Shift-Operator überladen.</p>
<p><a href="http://www.c-plusplus.net/forum/232010" rel="nofollow">http://www.c-plusplus.net/forum/232010</a></p>
<p>Sehr gutes Tut. übrigens. <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>gruß<br />
syntax</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222016</guid><dc:creator><![CDATA[Syntax_error]]></dc:creator><pubDate>Mon, 11 Jun 2012 13:23:47 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 13:24:05 GMT]]></title><description><![CDATA[<p>Compiler Fehlermeldungen:</p>
<pre><code>1&gt;------ Erstellen gestartet: Projekt: Komplexe Zahlen Versuch 4, Konfiguration: Debug Win32 ------
1&gt;Kompilieren...
1&gt;Main.cpp
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(40) : error C2804: Binärer Operator '&lt;&lt;' hat zu viele Parameter
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(40) : error C2333: 'Complex::operator &lt;&lt;': Fehler in Funktionsdeklaration; Funktionstext wird übersprungen
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(14) : error C2079: 'os' verwendet undefiniertes class 'std::basic_ostringstream&lt;_Elem,_Traits,_Alloc&gt;'
1&gt;        with
1&gt;        [
1&gt;            _Elem=char,
1&gt;            _Traits=std::char_traits&lt;char&gt;,
1&gt;            _Alloc=std::allocator&lt;char&gt;
1&gt;        ]
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(15) : error C2297: '&lt;&lt;': Ungültig, da der rechte Operand vom Typ 'const double' ist
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(15) : error C2297: '&lt;&lt;': Ungültig, da der rechte Operand vom Typ 'const char [4]' ist
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(15) : error C2297: '&lt;&lt;': Ungültig, da der rechte Operand vom Typ 'const double' ist
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(15) : error C2297: '&lt;&lt;': Ungültig, da der rechte Operand vom Typ 'const char [2]' ist
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(15) : warning C4552: '&lt;&lt;': Operator hat keine Auswirkungen; Operator mit Nebeneffekt erwartet
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(19) : error C2297: '&lt;&lt;': Ungültig, da der rechte Operand vom Typ 'const double' ist
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(19) : error C2297: '&lt;&lt;': Ungültig, da der rechte Operand vom Typ 'const char [2]' ist
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(19) : warning C4552: '&lt;&lt;': Operator hat keine Auswirkungen; Operator mit Nebeneffekt erwartet
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(24) : error C2297: '&lt;&lt;': Ungültig, da der rechte Operand vom Typ 'const double' ist
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(24) : warning C4552: '&lt;&lt;': Operator hat keine Auswirkungen; Operator mit Nebeneffekt erwartet
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(29) : error C2297: '&lt;&lt;': Ungültig, da der rechte Operand vom Typ 'const double' ist
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(29) : error C2297: '&lt;&lt;': Ungültig, da der rechte Operand vom Typ 'const double' ist
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(29) : error C2297: '&lt;&lt;': Ungültig, da der rechte Operand vom Typ 'const char [2]' ist
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(29) : warning C4552: '&lt;&lt;': Operator hat keine Auswirkungen; Operator mit Nebeneffekt erwartet
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(32) : error C2228: Links von &quot;.str&quot; muss sich eine Klasse/Struktur/Union befinden.
1&gt;        Typ ist 'int'
1&gt;Das Buildprotokoll wurde unter &quot;file://f:\Programmieren mit c++\Komplexe Zahlen Versuch 4\Komplexe Zahlen Versuch 4\Debug\BuildLog.htm&quot; gespeichert.
1&gt;Komplexe Zahlen Versuch 4 - 14 Fehler, 4 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
</code></pre>
<p>Die Rohform meines Programms hatte funktioniert:</p>
<pre><code class="language-cpp">class Complex
{
public:
	Complex(double r, double i)
	{
		m_real = r;
		m_imag = i;
	}
	~Complex (){};

	Complex operator + (const Complex &amp;o)
	{	
		return Complex(o.m_real + m_real, o.m_imag + m_imag);
	}

	Complex operator - (const Complex &amp;o)
	{
		return Complex(o.m_real - m_real, o.m_imag - m_imag);
	}

	Complex operator * (const Complex &amp;o)
	{
		return Complex((o.m_real * m_real) - (o.m_imag * m_imag), (o.m_real * m_imag) + (o.m_imag * m_real));
	}

	Complex operator / (const Complex &amp;o)
	{
		return Complex(((o.m_real * m_real) + (o.m_imag * m_imag)) /((m_real * m_real) + (m_imag * m_imag)),
			((o.m_imag * m_real) - (o.m_real * m_imag)) / (( m_real * m_real) + (m_imag * m_imag)));
	}

	/*
	Complex operator| (const Complex &amp;o)
	{
		return Complex (sqrt((o.m_real * o.m_real) + (o.m_imag * o.m_imag)));
	}
	*/

private:
double m_real, m_imag;

//protected:

};
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &quot;komplexe zahlen.h&quot;
using namespace std;

int main(int argc, char *argv[])
{

	Complex z1 (5.0, 3.54);
	Complex z2 (2.5, -3.54);
	Complex z3 = z1 + z2;
	Complex z4 = z1 - z2;
	Complex z5 = z1 * z2;
	Complex z6 = z1 / z2;
	//cout &lt;&lt; z3 &lt;&lt; endl;

	system(&quot;pause&quot;);
	return 0;

}
</code></pre>
<p>Jetzt will ich aber, dass er das Ergebnis z3 ausgibt und da komme ich nicht weiter!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222017</guid><dc:creator><![CDATA[scanbot90]]></dc:creator><pubDate>Mon, 11 Jun 2012 13:24:05 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 13:27:58 GMT]]></title><description><![CDATA[<p>Syntax_error schrieb:</p>
<blockquote>
<p>Du musst den Shift-Operator überladen.</p>
<p><a href="http://www.c-plusplus.net/forum/232010" rel="nofollow">http://www.c-plusplus.net/forum/232010</a></p>
<p>Sehr gutes Tut. übrigens. <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>gruß<br />
syntax</p>
</blockquote>
<p>danke Syntax_error, das Tut. hab ich mir vor längerer Zeit angeschaut, aber es hat mir nicht wirklich weiter geholfen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222018</guid><dc:creator><![CDATA[scanbot90]]></dc:creator><pubDate>Mon, 11 Jun 2012 13:27:58 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 13:36:13 GMT]]></title><description><![CDATA[<p>Du musst den Shift- Operator überladen.</p>
<p>Dies kommt in die Complex.h</p>
<pre><code class="language-cpp">friend std::ostream&amp; operator&lt;&lt;(std::ostream&amp;, const Complex&amp;);
</code></pre>
<p>und dies Complex.cpp</p>
<pre><code class="language-cpp">std::ostream&amp; operator&lt;&lt;(std::ostream&amp; out, const Complex&amp; a){

	out&lt;&lt;&quot;Realanteil: &quot;&lt;&lt;a.get_real()&lt;&lt;std::endl;
	out&lt;&lt;&quot;Imaginaerteil: &quot;&lt;&lt;a.get_imag()&lt;&lt;std::endl;
}
</code></pre>
<p>gruß<br />
syntax</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222026</guid><dc:creator><![CDATA[Syntax_error]]></dc:creator><pubDate>Mon, 11 Jun 2012 13:36:13 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 13:38:17 GMT]]></title><description><![CDATA[<blockquote>
<p>f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(40) : error C2804: Binärer Operator '&lt;&lt;' hat zu viele Parameter</p>
</blockquote>
<p>&quot;operator&lt;&lt;&quot; nimmt 2 parameter dein &quot;operator&lt;&lt;&quot; nimmt aber 3:<br />
Einen ostream, ein complex UND den versteckten this-pointer, da es eine methode ist.</p>
<p>Einfach als freie Funktion implementieren (da sie nicht auf private member von Complex zugreift, muss sie auch nicht ein friend sein)</p>
<pre><code class="language-cpp">class Complex
{
public:
    Complex(double r, double i)
    {
        m_real = r;
        m_imag = i;
    }
    ~Complex (){};

    const std::string Complex::toStdString() const
    {
        std::ostringstream os;
        os &lt;&lt; m_real &lt;&lt; &quot; + &quot; &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;

        if (m_real == 0)
        {
            os &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;
        }

        if (m_imag == 0)
        {
            os &lt;&lt; m_real;
        }

        if (m_imag &lt; 0)
        {
            os &lt;&lt; m_real &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;
        }

        return os.str();

    }

    Complex operator + (const Complex &amp;o)
    {   
        return Complex(o.m_real + m_real, o.m_imag + m_imag);
    }

    Complex operator - (const Complex &amp;o)
    {
        return Complex(o.m_real - m_real, o.m_imag - m_imag);
    }

    Complex operator * (const Complex &amp;o)
    {
        return Complex((o.m_real * m_real) - (o.m_imag * m_imag), (o.m_real * m_imag) + (o.m_imag * m_real));
    }

    Complex operator / (const Complex &amp;o)
    {
        return Complex(((o.m_real * m_real) + (o.m_imag * m_imag)) /((m_real * m_real) + (m_imag * m_imag)),
            ((o.m_imag * m_real) - (o.m_real * m_imag)) / (( m_real * m_real) + (m_imag * m_imag)));
    }

    /*
    Complex operator| (const Complex &amp;o)
    {
        return Complex (sqrt((o.m_real * o.m_real) + (o.m_imag * o.m_imag)));
    }
    */

private:
double m_real, m_imag;

//protected:

};

std::ostream&amp; operator &lt;&lt; (std::ostream&amp; os, const Complex &amp;o)
{
        return os &lt;&lt; o.toStdString();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2222029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222029</guid><dc:creator><![CDATA[Sup]]></dc:creator><pubDate>Mon, 11 Jun 2012 13:38:17 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 13:38:34 GMT]]></title><description><![CDATA[<p>scanbot90 schrieb:</p>
<blockquote>
<p>Compiler Fehlermeldungen:</p>
<pre><code>1&gt;------ Erstellen gestartet: Projekt: Komplexe Zahlen Versuch 4, 1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(40) : error C2804: Binärer Operator '&lt;&lt;' hat zu viele Parameter
</code></pre>
<p>...<br />
danke Syntax_error, das Tut. hab ich mir vor längerer Zeit angeschaut, aber es hat mir nicht wirklich weiter geholfen</p>
</blockquote>
<p>Du hättest nochmal genau zu dem Punkt nachlesen sollen, wo der Fehler auftritt (Der erste Fehler ist entscheidend, die restlichen können immer Folgefehler sein).</p>
<p>Ich rezitiere mal:</p>
<blockquote>
<p>Da der linke Operand das Streamobjekt ist und die Klassen der Standardbibliothek nicht nachträglich erweitert werden können, <strong>müssen die Streaming-Operatoren als freie Funktionen definiert werden</strong>.</p>
</blockquote>
<p>Bei dir sind es aber Methoden, keine freien Funktionen. Genaueres wirst du im Tutorial unter 3.4 nachlesen können.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222030</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 11 Jun 2012 13:38:34 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 14:15:52 GMT]]></title><description><![CDATA[<p>Sup schrieb:</p>
<blockquote>
<blockquote>
<p>f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(40) : error C2804: Binärer Operator '&lt;&lt;' hat zu viele Parameter</p>
</blockquote>
<p>&quot;operator&lt;&lt;&quot; nimmt 2 parameter dein &quot;operator&lt;&lt;&quot; nimmt aber 3:<br />
Einen ostream, ein complex UND den versteckten this-pointer, da es eine methode ist.</p>
<p>Einfach als freie Funktion implementieren (da sie nicht auf private member von Complex zugreift, muss sie auch nicht ein friend sein)</p>
</blockquote>
<p>Jetzt wo ich es als Freie Funktion implementiert habe, sind noch mehr Fehlermeldungen aufgetreten!</p>
<pre><code class="language-cpp">class Complex
{
public:
	Complex(double r, double i)
	{
		m_real = r;
		m_imag = i;
	}
	~Complex (){};

	const std::string Complex::toStdString() const
	{
		std::ostringstream os;
		os &lt;&lt; m_real &lt;&lt; &quot; + &quot; &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;

		if (m_real == 0)
		{
			os &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;
		}

		if (m_imag == 0)
		{
			os &lt;&lt; m_real;
		}

		if (m_imag &lt; 0)
		{
			os &lt;&lt; m_real &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;
		}

		return os.str();

	}

	/*std::ostream&amp; operator &lt;&lt; (std::ostream&amp; os, const Complex &amp;o)
	{
		return os &lt;&lt; o.toStdString();
	}
	*/

	Complex operator + (const Complex &amp;o)
	{	
		return Complex(o.m_real + m_real, o.m_imag + m_imag);
	}

	Complex operator - (const Complex &amp;o)
	{
		return Complex(o.m_real - m_real, o.m_imag - m_imag);
	}

	Complex operator * (const Complex &amp;o)
	{
		return Complex((o.m_real * m_real) - (o.m_imag * m_imag), (o.m_real * m_imag) + (o.m_imag * m_real));
	}

	Complex operator / (const Complex &amp;o)
	{
		return Complex(((o.m_real * m_real) + (o.m_imag * m_imag)) /((m_real * m_real) + (m_imag * m_imag)),
			((o.m_imag * m_real) - (o.m_real * m_imag)) / (( m_real * m_real) + (m_imag * m_imag)));
	}

	/*
	Complex operator| (const Complex &amp;o)
	{
		return Complex (sqrt((o.m_real * o.m_real) + (o.m_imag * o.m_imag)));
	}
	*/

private:
double m_real, m_imag;

//protected:

};
	std::ostream&amp; operator &lt;&lt; (std::ostream&amp; os, const Complex &amp;o)
	{
		return os &lt;&lt; o.toStdString();
	}
</code></pre>
<pre><code>1&gt;------ Erstellen gestartet: Projekt: Komplexe Zahlen Versuch 4, Konfiguration: Debug Win32 ------
1&gt;Kompilieren...
1&gt;Main.cpp
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(14) : error C2079: 'os' verwendet undefiniertes class 'std::basic_ostringstream&lt;_Elem,_Traits,_Alloc&gt;'
1&gt;        with
1&gt;        [
1&gt;            _Elem=char,
1&gt;            _Traits=std::char_traits&lt;char&gt;,
1&gt;            _Alloc=std::allocator&lt;char&gt;
1&gt;        ]
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(15) : error C2297: '&lt;&lt;': Ungültig, da der rechte Operand vom Typ 'const double' ist
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(15) : error C2297: '&lt;&lt;': Ungültig, da der rechte Operand vom Typ 'const char [4]' ist
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(15) : error C2297: '&lt;&lt;': Ungültig, da der rechte Operand vom Typ 'const double' ist
</code></pre>
<p>Also wie gesagt ich bin Anfänger, also habt gedult mit mir (seit 2,5 Monaten setzte ich mich mit c++ auseinander) <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/2222037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222037</guid><dc:creator><![CDATA[scanbot90]]></dc:creator><pubDate>Mon, 11 Jun 2012 14:15:52 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 14:00:01 GMT]]></title><description><![CDATA[<p>scanbot90 schrieb:</p>
<blockquote>
<p>...</p>
</blockquote>
<p>Bitte poste nur den ersten, maximal die ersten 3 Fehlermeldungen. Grundsätzlich sind viele Fehler auf immer den ersten zurückzuführen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222048</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222048</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 11 Jun 2012 14:00:01 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 14:01:42 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class Complex
{
public:
    Complex(double r, double i)
    {
        m_real = r;
        m_imag = i;
    }
    ~Complex (){};
</code></pre>
<p>du hast hier nirgens m_imag und m_real deklariert und in Zeile 75 auf einmal:</p>
<pre><code class="language-cpp">private:
double m_real, m_imag;
</code></pre>
<p>Komplett verwirrt?</p>
<p>gruß<br />
syntax</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222050</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222050</guid><dc:creator><![CDATA[Syntax_error]]></dc:creator><pubDate>Mon, 11 Jun 2012 14:01:42 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 14:05:12 GMT]]></title><description><![CDATA[<p>Syntax_error schrieb:</p>
<blockquote>
<p>...Komplett verwirrt?...</p>
</blockquote>
<p>Könnte es sein das du es bist? Es sind Membervariablen die im Konstruktor verwendet werden, was ist daran auszusetzen? (Auch wenn ich die Initialisierungsliste statt der Zuweisung vorziehen würde).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222053</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222053</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 11 Jun 2012 14:05:12 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 14:06:00 GMT]]></title><description><![CDATA[<p>Fehlt vielleicht ein Include &lt;sstream&gt;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222054</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222054</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 11 Jun 2012 14:06:00 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 14:10:01 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Fehlt vielleicht ein Include &lt;sstream&gt;?</p>
</blockquote>
<p>ja hat gefehlt! Mein Chef setzt sich auch gerade damit auseinander, versteht aber auch nicht warum es dann heißt</p>
<pre><code>1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(42) : error C2804: Binärer Operator '&lt;&lt;' hat zu viele Parameter
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\komplexe zahlen.h(42) : error C2333: 'Complex::operator &lt;&lt;': Fehler in Funktionsdeklaration; Funktionstext wird übersprungen
1&gt;f:\programmieren mit c++\komplexe zahlen versuch 4\komplexe zahlen versuch 4\main.cpp(14) : error C2679: Binärer Operator '&lt;&lt;': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'Complex' akzeptiert (oder keine geeignete Konvertierung möglich)
1&gt;
</code></pre>
<p>Aktuell sieht die Headerfile jetzt so aus:</p>
<pre><code class="language-cpp">#include &lt;sstream&gt;

class Complex
{
public:
	Complex(double r, double i)
	{
		m_real = r;
		m_imag = i;
	}
	~Complex (){};

	const std::string Complex::toStdString() const
	{
		std::ostringstream os;
		os &lt;&lt; m_real &lt;&lt; &quot; + &quot; &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;

		if (m_real == 0)
		{
			os &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;
		}

		if (m_imag == 0)
		{
			os &lt;&lt; m_real;
		}

		if (m_imag &lt; 0)
		{
			os &lt;&lt; m_real &lt;&lt; m_imag &lt;&lt; &quot;i&quot;;
		}
		return os.str();

	}

	std::ostream&amp; operator &lt;&lt; (std::ostream&amp; os, const Complex &amp;o)
	{
		return os &lt;&lt; o.toStdString();
	}

	Complex operator + (const Complex &amp;o)
	{	
		return Complex(o.m_real + m_real, o.m_imag + m_imag);
	}

	Complex operator - (const Complex &amp;o)
	{
		return Complex(o.m_real - m_real, o.m_imag - m_imag);
	}

	Complex operator * (const Complex &amp;o)
	{
		return Complex((o.m_real * m_real) - (o.m_imag * m_imag), (o.m_real * m_imag) + (o.m_imag * m_real));
	}

	Complex operator / (const Complex &amp;o)
	{
		return Complex(((o.m_real * m_real) + (o.m_imag * m_imag)) /((m_real * m_real) + (m_imag * m_imag)),
			((o.m_imag * m_real) - (o.m_real * m_imag)) / (( m_real * m_real) + (m_imag * m_imag)));
	}

private:
double m_real, m_imag;

//protected:

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2222057</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222057</guid><dc:creator><![CDATA[scanbot90]]></dc:creator><pubDate>Mon, 11 Jun 2012 14:10:01 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 14:20:57 GMT]]></title><description><![CDATA[<p>Dein operator&lt;&lt; ist immer noch ein Member und keine freie Funktion</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222060</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 11 Jun 2012 14:20:57 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 14:22:08 GMT]]></title><description><![CDATA[<p>Dein operator&lt;&lt; ist keine freie Funktion! Wurde eigentlich oft genug erwähnt dass das falsch ist. Ich hatte auch gehofft ich hätte erklärt, warum diese Fehlermeldung auftritt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222063</guid><dc:creator><![CDATA[Sup]]></dc:creator><pubDate>Mon, 11 Jun 2012 14:22:08 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 14:23:52 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>Dein operator&lt;&lt; ist immer noch ein Member und keine freie Funktion</p>
</blockquote>
<p>:DD ahh danke euch allen!</p>
<p>habe es jetzt als freie Funktion geschrieben.. und jetzt funktioniert es!</p>
<p>Ich kann dieses Forum nur an alle weiter empfehlen!<br />
Liebe Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222064</guid><dc:creator><![CDATA[scanbot90]]></dc:creator><pubDate>Mon, 11 Jun 2012 14:23:52 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 14:30:30 GMT]]></title><description><![CDATA[<p>Was genau macht deiner Meinung nach eigentlich Zeile 11?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222069</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 11 Jun 2012 14:30:30 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 15:57:25 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a>: mein Chef meinte ich sollte noch einen Destruktor reinschreiben.. also habe ich das gemacht.. Dient zur Freigebung benutzter Ressourcen <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2222117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222117</guid><dc:creator><![CDATA[scanbot90]]></dc:creator><pubDate>Mon, 11 Jun 2012 15:57:25 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 15:59:54 GMT]]></title><description><![CDATA[<p>wenn der destruktor leer ist, kannst du ihn auch gleich weg lassen, da der compiler dann einen für dich erzeugt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222118</guid><dc:creator><![CDATA[vario-500]]></dc:creator><pubDate>Mon, 11 Jun 2012 15:59:54 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 16:01:27 GMT]]></title><description><![CDATA[<p>danke <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="😉"
    /> wie schon gesagt, bin bei den Anfängen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222119</guid><dc:creator><![CDATA[scanbot90]]></dc:creator><pubDate>Mon, 11 Jun 2012 16:01:27 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Komplexe Zahlen Klasse on Mon, 11 Jun 2012 16:01:54 GMT]]></title><description><![CDATA[<p>scanbot90 schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a>: mein Chef meinte ich sollte noch einen Destruktor reinschreiben..</p>
</blockquote>
<p>Wenn du keinen eigenen Destruktor schreibst, wird automatisch ein Leerer erzeugt.</p>
<p>Sprich: Du machst nichts anderes, als du bekommen würdest, wenn du ihn unnötigerweise selbst leer implementierst.</p>
<p>scanbot90 schrieb:</p>
<blockquote>
<p>Dient zur Freigebung benutzter Ressourcen <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>
</blockquote>
<p>Schön aus dem Lehrbuch rezitiert, aber unsinnig, wenn du keine Aufräumarbeiten durchführst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2222120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2222120</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Mon, 11 Jun 2012 16:01:54 GMT</pubDate></item></channel></rss>