<?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 überladen]]></title><description><![CDATA[<p>Hallo, ich habe eine Bruch Klasse, die die Variablen zaehler und nenner enthält. Nun möchte ich diese Variablen mit einem Backslash getrennt über cout ausgeben.</p>
<p>BSP:</p>
<pre><code class="language-cpp">class RZahl{
	long zaehler;
	long nenner;

public:
	/* Konstruktor */
	RZahl(long nZaehler = 0, long nNenner = 1);

	/* Getter*/
	long getZaehler();

	/* Getter*/
	long getNenner();

	void operator &lt;&lt; (RZahl&amp; op1);
}
</code></pre>
<p>In Main wird das Objekt erstellt:<br />
RZahl rat(1,2);</p>
<p>jetzt möchte ich mit cout &lt;&lt; rat; die Augabe 1/2 haben.</p>
<p>Dazu muss ich doch diesen Operator &quot;&lt;&lt;&quot; überladen.<br />
Leider funktioniert es nicht, so wie ich es mache, wie muss denn das richtig aussehen?</p>
<pre><code class="language-cpp">void RZahl::operator &lt;&lt; (RZahl&amp; op1){
	cout &lt;&lt; op1.getZaehler() &lt;&lt; &quot;/&quot;;
	cout &lt;&lt; op1.getNenner() &lt;&lt; endl;
}
</code></pre>
<p>EDIT: Hopla habs doch selbst hinbekommen</p>
<pre><code class="language-cpp">ostream&amp; operator &lt;&lt; (ostream&amp; out, RZahl&amp; op1){
	out &lt;&lt; op1.getZaehler() &lt;&lt; &quot;/&quot; &lt;&lt; op1.getNenner();
	return out;
}
</code></pre>
<p>Eine Frage hätte ich noch. Warum kann ich diese Methode nicht in der RZahl Klasse definieren? Die Musste extra über der Main Klasse platzieren, damit es geht. Aber ich weiß nicht warum.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217165/operator-überladen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 23:02:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217165.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Jul 2008 21:46:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to operator überladen on Thu, 03 Jul 2008 21:58:35 GMT]]></title><description><![CDATA[<p>Hallo, ich habe eine Bruch Klasse, die die Variablen zaehler und nenner enthält. Nun möchte ich diese Variablen mit einem Backslash getrennt über cout ausgeben.</p>
<p>BSP:</p>
<pre><code class="language-cpp">class RZahl{
	long zaehler;
	long nenner;

public:
	/* Konstruktor */
	RZahl(long nZaehler = 0, long nNenner = 1);

	/* Getter*/
	long getZaehler();

	/* Getter*/
	long getNenner();

	void operator &lt;&lt; (RZahl&amp; op1);
}
</code></pre>
<p>In Main wird das Objekt erstellt:<br />
RZahl rat(1,2);</p>
<p>jetzt möchte ich mit cout &lt;&lt; rat; die Augabe 1/2 haben.</p>
<p>Dazu muss ich doch diesen Operator &quot;&lt;&lt;&quot; überladen.<br />
Leider funktioniert es nicht, so wie ich es mache, wie muss denn das richtig aussehen?</p>
<pre><code class="language-cpp">void RZahl::operator &lt;&lt; (RZahl&amp; op1){
	cout &lt;&lt; op1.getZaehler() &lt;&lt; &quot;/&quot;;
	cout &lt;&lt; op1.getNenner() &lt;&lt; endl;
}
</code></pre>
<p>EDIT: Hopla habs doch selbst hinbekommen</p>
<pre><code class="language-cpp">ostream&amp; operator &lt;&lt; (ostream&amp; out, RZahl&amp; op1){
	out &lt;&lt; op1.getZaehler() &lt;&lt; &quot;/&quot; &lt;&lt; op1.getNenner();
	return out;
}
</code></pre>
<p>Eine Frage hätte ich noch. Warum kann ich diese Methode nicht in der RZahl Klasse definieren? Die Musste extra über der Main Klasse platzieren, damit es geht. Aber ich weiß nicht warum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1540694</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1540694</guid><dc:creator><![CDATA[rustywing]]></dc:creator><pubDate>Thu, 03 Jul 2008 21:58:35 GMT</pubDate></item><item><title><![CDATA[Reply to operator überladen on Thu, 03 Jul 2008 21:56:49 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">std::ostream &amp; RZahl::operator &lt;&lt; (std::ostream &amp; os, RZahl&amp; op1){
    cout &lt;&lt; op1.getZaehler() &lt;&lt; &quot;/&quot;;
    cout &lt;&lt; op1.getNenner() &lt;&lt; endl;
return os;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1540697</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1540697</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 03 Jul 2008 21:56:49 GMT</pubDate></item><item><title><![CDATA[Reply to operator überladen on Thu, 03 Jul 2008 22:01:48 GMT]]></title><description><![CDATA[<p>Danke.:)<br />
Warum kann ich eigentlich diese Methode nicht in der RZahl Klasse definieren? Die Musste extra über der Main Klasse platzieren, damit es geht.</p>
<pre><code class="language-cpp">ostream&amp; operator &lt;&lt; (ostream&amp; out, RZahl&amp; op1){
    out &lt;&lt; op1.getZaehler() &lt;&lt; &quot;/&quot; &lt;&lt; op1.getNenner();
    return out;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1540699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1540699</guid><dc:creator><![CDATA[rustywing]]></dc:creator><pubDate>Thu, 03 Jul 2008 22:01:48 GMT</pubDate></item><item><title><![CDATA[Reply to operator überladen on Thu, 03 Jul 2008 22:13:09 GMT]]></title><description><![CDATA[<p>rustywing schrieb:</p>
<blockquote>
<p>Danke.:)<br />
Warum kann ich eigentlich diese Methode nicht in der RZahl Klasse definieren? Die Musste extra über der Main Klasse platzieren, damit es geht.</p>
<pre><code class="language-cpp">ostream&amp; operator &lt;&lt; (ostream&amp; out, RZahl&amp; op1){
    out &lt;&lt; op1.getZaehler() &lt;&lt; &quot;/&quot; &lt;&lt; op1.getNenner();
    return out;
}
</code></pre>
</blockquote>
<p>Sry, habe ich noch vergessen zu sagen. Das Problem ist, dass das ein 2 stelliger Operator ist. Und wenn du ne Member Funktion überlädst, dann ist der erste Parameter implizit die Klasse. Du willst aber ostream zuerst haben, also musst du eine globale Funktion definieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1540705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1540705</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Thu, 03 Jul 2008 22:13:09 GMT</pubDate></item><item><title><![CDATA[Reply to operator überladen on Fri, 04 Jul 2008 06:27:24 GMT]]></title><description><![CDATA[<p>wenn du das ganze in die class schreibst dann denkt der compiler du meinst den binären &lt;&lt; operator (also diesen komischen bit operator)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1540767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1540767</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 04 Jul 2008 06:27:24 GMT</pubDate></item><item><title><![CDATA[Reply to operator überladen on Fri, 04 Jul 2008 06:29:15 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>wenn du das ganze in die class schreibst dann denkt der compiler du meinst den binären &lt;&lt; operator (also diesen komischen bit operator)...</p>
</blockquote>
<p>Und der Operator, der rechts einen ostream und links ein RZahl stehen hat, ist nicht binär? :p</p>
<p>Nein, drakon hat die Begründung schon genannt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1540770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1540770</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 04 Jul 2008 06:29:15 GMT</pubDate></item><item><title><![CDATA[Reply to operator überladen on Fri, 04 Jul 2008 10:48:34 GMT]]></title><description><![CDATA[<p>Danke für die Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1540917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1540917</guid><dc:creator><![CDATA[rustywing]]></dc:creator><pubDate>Fri, 04 Jul 2008 10:48:34 GMT</pubDate></item><item><title><![CDATA[Reply to operator überladen on Fri, 04 Jul 2008 10:54:44 GMT]]></title><description><![CDATA[<p>drakon schrieb:</p>
<blockquote>
<pre><code class="language-cpp">std::ostream &amp; RZahl::operator &lt;&lt; (std::ostream &amp; os, RZahl&amp; op1){
    cout &lt;&lt; op1.getZaehler() &lt;&lt; &quot;/&quot;;
    cout &lt;&lt; op1.getNenner() &lt;&lt; endl;
return os;
}
</code></pre>
</blockquote>
<p>Also prinzipiell sollte man in einem ouput operator nicht std::endl verwenden. Dieser modifizierer hat 2 Aufgaben, die beide hier nicht hin gehören. Zum einen wird eine Zeilenschaltung ausgegeben und das ist nicht das, was man von einem solchen Ausgabeoperator erwartet und zum anderen wird ein flush auf den stream ausgeführt, was nicht Aufgabe des Operators ist.</p>
<p>Und noch was zur Frage: Das Zeichen '/' ist kein Backslash, sondern ein Slash. Ein Backslash ist '\'.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1540919</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1540919</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Fri, 04 Jul 2008 10:54:44 GMT</pubDate></item><item><title><![CDATA[Reply to operator überladen on Fri, 04 Jul 2008 11:10:47 GMT]]></title><description><![CDATA[<p>sollte man RZahl nicht als const uebergeben ?</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1540932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1540932</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Fri, 04 Jul 2008 11:10:47 GMT</pubDate></item><item><title><![CDATA[Reply to operator überladen on Fri, 04 Jul 2008 13:00:07 GMT]]></title><description><![CDATA[<p>Meep Meep schrieb:</p>
<blockquote>
<p>sollte man RZahl nicht als const uebergeben ?</p>
<p>Meep Meep</p>
</blockquote>
<p>Ja. Das macht man normalerweise so.<br />
Auch was tntnet schreibt ist richtig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1541016</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541016</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 04 Jul 2008 13:00:07 GMT</pubDate></item><item><title><![CDATA[Reply to operator überladen on Fri, 04 Jul 2008 13:09:51 GMT]]></title><description><![CDATA[<p><a href="http://ittk.falb.at/pt/unterlagen/vcppk/die_klasse_rational.html" rel="nofollow">http://ittk.falb.at/pt/unterlagen/vcppk/die_klasse_rational.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1541023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1541023</guid><dc:creator><![CDATA[Erhard Henkes]]></dc:creator><pubDate>Fri, 04 Jul 2008 13:09:51 GMT</pubDate></item></channel></rss>