<?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[Überladen von Operatoren]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich hoffe ihr könnt mir bei meinem KLEINEN problem weiterhelfen.</p>
<p>Ich versuche ( ist eine Aufgabestellung ) einen Operator zu realisieren, der mit natürlichen Zahlen auch funktioniert.</p>
<p>z.B.</p>
<p>int main ()<br />
{<br />
Rechner a, b, c; // a, b, c sind meine Objekte</p>
<p>c = a+b+1;</p>
<p>}</p>
<p>Sobald ich die &quot;1&quot; dort einbringe, bekomme ich die Fehlermeldung<br />
&quot;Es konnte kein Operator gefunden werden, der einen rechtseitigen Operator vom Typ double akzeptiert ( oder kein geeignete konvertierung möglich)&quot;</p>
<p>Ich habe einen zweiten Konstruktor, der diesen Umwandeln sollte nach meinem wissen. In diesem Konstruktor steht nix drin.<br />
Kann jetzt sein , das dieser falsch ist und was fehlt.</p>
<p>Rechner::Rechner( double x )<br />
{</p>
<p>}</p>
<p>Der Standard Konstruktor ist auch vorhanden:</p>
<p>Rechner::Rechner()<br />
{<br />
zahl1 = 1;<br />
zahl2 = 2;<br />
}</p>
<p>Mein Operator sieht so aus:</p>
<p>Rechner operator + ( Rechner &amp; a, Rechner &amp; b )<br />
{<br />
//..........<br />
}<br />
Ich hoffe das ihr mir weiterhelfen könnt.</p>
<p>Danke im voraus.</p>
<p>gruß</p>
<p>musterschüler</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/149858/überladen-von-operatoren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 10:23:15 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/149858.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 10 Jun 2006 13:50:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Überladen von Operatoren on Sat, 10 Jun 2006 13:50:20 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich hoffe ihr könnt mir bei meinem KLEINEN problem weiterhelfen.</p>
<p>Ich versuche ( ist eine Aufgabestellung ) einen Operator zu realisieren, der mit natürlichen Zahlen auch funktioniert.</p>
<p>z.B.</p>
<p>int main ()<br />
{<br />
Rechner a, b, c; // a, b, c sind meine Objekte</p>
<p>c = a+b+1;</p>
<p>}</p>
<p>Sobald ich die &quot;1&quot; dort einbringe, bekomme ich die Fehlermeldung<br />
&quot;Es konnte kein Operator gefunden werden, der einen rechtseitigen Operator vom Typ double akzeptiert ( oder kein geeignete konvertierung möglich)&quot;</p>
<p>Ich habe einen zweiten Konstruktor, der diesen Umwandeln sollte nach meinem wissen. In diesem Konstruktor steht nix drin.<br />
Kann jetzt sein , das dieser falsch ist und was fehlt.</p>
<p>Rechner::Rechner( double x )<br />
{</p>
<p>}</p>
<p>Der Standard Konstruktor ist auch vorhanden:</p>
<p>Rechner::Rechner()<br />
{<br />
zahl1 = 1;<br />
zahl2 = 2;<br />
}</p>
<p>Mein Operator sieht so aus:</p>
<p>Rechner operator + ( Rechner &amp; a, Rechner &amp; b )<br />
{<br />
//..........<br />
}<br />
Ich hoffe das ihr mir weiterhelfen könnt.</p>
<p>Danke im voraus.</p>
<p>gruß</p>
<p>musterschüler</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075129</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075129</guid><dc:creator><![CDATA[Musterschüler]]></dc:creator><pubDate>Sat, 10 Jun 2006 13:50:20 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen von Operatoren on Sat, 10 Jun 2006 15:55:26 GMT]]></title><description><![CDATA[<p>1 ist ein integer, kein double.</p>
<p>Probiere</p>
<pre><code class="language-cpp">c = a+b+1.0;
</code></pre>
<p>oder überlade</p>
<pre><code class="language-cpp">Rechner::Rechner( int x )
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1075199</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075199</guid><dc:creator><![CDATA[Xin]]></dc:creator><pubDate>Sat, 10 Jun 2006 15:55:26 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen von Operatoren on Sat, 10 Jun 2006 16:11:48 GMT]]></title><description><![CDATA[<p>Geht leider nicht.[cpp]</p>
<p>kommt immer noch die Fehlermeldung.</p>
<p>Hier mal der gesmate Code:</p>
<pre><code>#include &lt;iostream&gt;
#include &quot;Rational.h&quot;

using namespace std;

void main ()
{
	Rational a,b,c; 
    a.Definiere(3,3);
    b.Definiere(1,3);
    c = a+b+1.0;
}

long ggt (long x, long y )
{
	while ( y )
	{
		long rest = x % y;
		x = y;
		y = rest;
	}

	return x;
}

Rational operator + ( Rational &amp; a, Rational &amp; b )
{
	Rational temp = a;
	return temp += b;
}

#include &quot;.\rational.h&quot;
#include &lt;cassert&gt;

Rational::Rational(void)
{
	zaehler = 1;
	nenner = 1;
}

Rational::Rational( long x )
{
	zaehler = x;
	nenner = 1;
}

Rational::~Rational(void)
{
}

long Rational::Zaehler(void)
{
	return zaehler;
}

long Rational::Nenner(void)
{
	return nenner;
}

Rational&amp; Rational::operator += (Rational &amp; x)
{
	zaehler = zaehler * x.nenner + nenner * x.zaehler;
	nenner = nenner * x.nenner;

	Kuerzen();

	return *this;
}
void Rational::Kehrwert(void)
{
	long temp = zaehler;
	zaehler = nenner;
	nenner = temp;
	assert(nenner != 0);
}

void Rational::Kuerzen(void)
{
	int sign = 1;

	if ( zaehler &lt; 0 )
	{
		sign = -sign;
		zaehler = -zaehler;
	}
	if ( nenner &lt; 0 )
	{
		sign = -sign;
		nenner = -nenner;
	}

	long teiler = ggt( zaehler, nenner );

	zaehler = sign * zaehler / teiler;
	nenner = nenner / teiler;
}

void Rational::Definiere(long z, long n)
{
	zaehler = z;
	nenner = n;
	assert(nenner != 0);
	Kuerzen();
}
</code></pre>
<p>Ich habe gelesen, das durch die schreibweise:</p>
<pre><code>c = a+b+[b]1.0[/b];
</code></pre>
<p>für 1.0 ein temp Objekt automatisch erzeugt wird.<br />
Leider klappt es net. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Gruß</p>
<p>Musterschüler</p>
<p>PS: Vorab ein dank von mir.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075205</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075205</guid><dc:creator><![CDATA[Musterschüler]]></dc:creator><pubDate>Sat, 10 Jun 2006 16:11:48 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen von Operatoren on Sat, 10 Jun 2006 18:35:59 GMT]]></title><description><![CDATA[<p>Du hast nur eine Konstruktor der einen long-Wert nimmt. Damit der Compiler aber deinen Wert automatisch umwandeln kann benötigst du einen für Integers / Doubles. [Oder du schreibst + 1l]</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075268</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075268</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Sat, 10 Jun 2006 18:35:59 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen von Operatoren on Sat, 10 Jun 2006 19:00:12 GMT]]></title><description><![CDATA[<p>FireFlow schrieb:</p>
<blockquote>
<p>Du hast nur eine Konstruktor der einen long-Wert nimmt. Damit der Compiler aber deinen Wert automatisch umwandeln kann benötigst du einen für Integers / Doubles. [Oder du schreibst + 1l]</p>
<p>Gruß</p>
</blockquote>
<p>das ist nicht das problem. aber seine operatoren nehmen referenzen auf nicht-const... da werden nat. keine temporaries erzeugt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075278</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075278</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Sat, 10 Jun 2006 19:00:12 GMT</pubDate></item><item><title><![CDATA[Reply to Überladen von Operatoren on Sat, 10 Jun 2006 19:10:37 GMT]]></title><description><![CDATA[<p>Danke!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1075285</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1075285</guid><dc:creator><![CDATA[Musterschüler]]></dc:creator><pubDate>Sat, 10 Jun 2006 19:10:37 GMT</pubDate></item></channel></rss>