<?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übeladung? falls a*b gerechnet soll dann rechne a+b]]></title><description><![CDATA[<p>hi, also mein problem ist das ich zwei zahlen habe (double) die sollen jetzt aber falls ich a*b im quelltext stehen habe als a+b gerechnet werden. angeblich soll das mit operator überladung gehen, habe auch schon probiert meinen * operator zu &quot;überladen&quot; so dass dann a+b gerechnet wird... allerdings sagt mir der compiler das der operator + (in der operator überladung) nicht definiert ist.<br />
kann mir jemand sagen ob es mit operator überladung geht und evtl. wie ich das anstelle?! bitte keine tips mit (na dann rechne noch a+b...) denn ich soll später mehrere &quot;verdrehte&quot; operatoren einsetzten können bzw. in einem algorithmus damit rechnen und will/soll den nicht jedesmal umschreiben.</p>
<pre><code class="language-cpp">class komp{double x;};
komp operator*(komp&amp; a, komp&amp; b)
{
return (a+b);
};
</code></pre>
<p>und der fehler den ich bekomme ist:</p>
<pre><code>error: no match for ‘operator+’ in ‘a + b’
</code></pre>
<p>was für mich soviel heisst wie &quot;ich kenne keinen operator + um den operator * zu überladen&quot;...</p>
<p>mit dank im voraus...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/171328/operatorübeladung-falls-a-b-gerechnet-soll-dann-rechne-a-b</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 09:07:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/171328.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Jan 2007 14:24:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to operatorübeladung? falls a*b gerechnet soll dann rechne a+b on Wed, 24 Jan 2007 14:24:51 GMT]]></title><description><![CDATA[<p>hi, also mein problem ist das ich zwei zahlen habe (double) die sollen jetzt aber falls ich a*b im quelltext stehen habe als a+b gerechnet werden. angeblich soll das mit operator überladung gehen, habe auch schon probiert meinen * operator zu &quot;überladen&quot; so dass dann a+b gerechnet wird... allerdings sagt mir der compiler das der operator + (in der operator überladung) nicht definiert ist.<br />
kann mir jemand sagen ob es mit operator überladung geht und evtl. wie ich das anstelle?! bitte keine tips mit (na dann rechne noch a+b...) denn ich soll später mehrere &quot;verdrehte&quot; operatoren einsetzten können bzw. in einem algorithmus damit rechnen und will/soll den nicht jedesmal umschreiben.</p>
<pre><code class="language-cpp">class komp{double x;};
komp operator*(komp&amp; a, komp&amp; b)
{
return (a+b);
};
</code></pre>
<p>und der fehler den ich bekomme ist:</p>
<pre><code>error: no match for ‘operator+’ in ‘a + b’
</code></pre>
<p>was für mich soviel heisst wie &quot;ich kenne keinen operator + um den operator * zu überladen&quot;...</p>
<p>mit dank im voraus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216037</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216037</guid><dc:creator><![CDATA[TeT]]></dc:creator><pubDate>Wed, 24 Jan 2007 14:24:51 GMT</pubDate></item><item><title><![CDATA[Reply to operatorübeladung? falls a*b gerechnet soll dann rechne a+b on Wed, 24 Jan 2007 14:33:56 GMT]]></title><description><![CDATA[<p>Ja, du hast die Frage doch schon selbst beantwortet.<br />
Bzw. die Fehlermeldung ist relativ eindeutig.<br />
operator + musst du auch noch überladen, oder du addierst die double's.<br />
Übrigens Paramterübergabe besser via <strong>const</strong> reference.<br />
Außerdem Zugriff auf Membervariable x.<br />
x muss in den Beispielen <strong>public</strong> sein, hab deshalb <strong>struct</strong> statt <strong>class</strong> genommen.</p>
<pre><code class="language-cpp">struct komp{ double x;};
komp operator*(const komp&amp; a, const komp&amp; b)
{
    return (a+b);
};
komp operator+(const komp&amp; a, const komp&amp; b)
{
    return (a.x+b.x);
};
</code></pre>
<p>oder</p>
<pre><code class="language-cpp">struct komp{double x;};
komp operator*(const komp&amp; a, const komp&amp; b)
{
return (a.x+b.x);
};
</code></pre>
<p>Du brauchst wohl eher zweiteres.</p>
<p>MfG<br />
DDR-RAM</p>
<p>edit: dreimal editiert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216040</guid><dc:creator><![CDATA[DDR-RAM]]></dc:creator><pubDate>Wed, 24 Jan 2007 14:33:56 GMT</pubDate></item><item><title><![CDATA[Reply to operatorübeladung? falls a*b gerechnet soll dann rechne a+b on Wed, 24 Jan 2007 14:33:38 GMT]]></title><description><![CDATA[<p>hi, danke erstmal aber der + operator soll ja auch &quot;umdefiniert&quot; werden, allerdings soll der * operator dann nicht das &quot;neue&quot; + ausführen... ich hoffe das klingt nicht so verwirrt wie ich gerade bin...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216041</guid><dc:creator><![CDATA[TeT]]></dc:creator><pubDate>Wed, 24 Jan 2007 14:33:38 GMT</pubDate></item><item><title><![CDATA[Reply to operatorübeladung? falls a*b gerechnet soll dann rechne a+b on Wed, 24 Jan 2007 14:34:37 GMT]]></title><description><![CDATA[<p>das habe ich mir schon gedacht, deshalb variante zwei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216043</guid><dc:creator><![CDATA[DDR-RAM]]></dc:creator><pubDate>Wed, 24 Jan 2007 14:34:37 GMT</pubDate></item><item><title><![CDATA[Reply to operatorübeladung? falls a*b gerechnet soll dann rechne a+b on Wed, 24 Jan 2007 15:29:52 GMT]]></title><description><![CDATA[<p>Wäre es nicht besser wenn er statt</p>
<p>DDR-RAM schrieb:</p>
<blockquote>
<pre><code class="language-cpp">struct komp{double x;};
komp operator*(const komp&amp; a, const komp&amp; b){
    return (a.x+b.x);
};
</code></pre>
</blockquote>
<pre><code class="language-cpp">....
return komp(a.x+b.x);
....
</code></pre>
<p>schreiben würde?</p>
<p>Gruß Baracke</p>
<p>PS: Die Operratoren für die Grunddatentypen wie &quot;int&quot;, &quot;double&quot; usw. darf man nicht überladen, oder?</p>
<p>PS2: Warum darf mein (Edit: *hust* man..) kein &quot;fett&quot;, &quot;kursiv&quot; usw. direkt in den Code-Tags benützten? Wäre doch praktisch zur besseren Veranschaulichung.</p>
<p>Edit: Nur das Zitat richtig gestellt ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216063</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216063</guid><dc:creator><![CDATA[Baracke]]></dc:creator><pubDate>Wed, 24 Jan 2007 15:29:52 GMT</pubDate></item><item><title><![CDATA[Reply to operatorübeladung? falls a*b gerechnet soll dann rechne a+b on Wed, 24 Jan 2007 15:05:36 GMT]]></title><description><![CDATA[<p>danke zum 2.<br />
ich habe jetzt aber das problem das ich alles mögliche &quot;überladen&quot; muss, z.B. &lt;, &gt;, ... gibts da eine möglichkeit das alle operatoren (ausser die die ich speziell überlade) z.B. von den &quot;double&quot;s übernimmt? also das ich nur noch meine 2 operatoren überlade und die anderen alle das tuen was man gewohnt ist?!</p>
<p>-mfg-</p>
<p>edit:<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14928">@baracke</a><br />
hey genau das bräuchte ich! operatoren von double überladen dann müsste ich nicht diesen &quot;umweg&quot; nehmen obwohl ich nur mit doubles hantiere!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216077</guid><dc:creator><![CDATA[TeT]]></dc:creator><pubDate>Wed, 24 Jan 2007 15:05:36 GMT</pubDate></item><item><title><![CDATA[Reply to operatorübeladung? falls a*b gerechnet soll dann rechne a+b on Wed, 24 Jan 2007 18:11:59 GMT]]></title><description><![CDATA[<p>Da muss ich dich leider entäuschen, das war eher eine rhetorische Frage mit dem Überladen. Und selbst wenn es ginge würde ich davon abzuraten, da jegliche Konsistenz gegenüber dem Standard verloren geht. Was Harken in Schiffankergröße nach sich ziehen würde. Die Wartbarkeit wär ein &quot;wenig&quot; betroffen davon, zumindestens wenn es andere Personen machen müssen, mal ganz von der Erweiterbarkeit zu schweigen. Alle Standartfunktionen die deine Operratoren benützten, wären unbrauchbar usw. Zusammengefasst kann man sagen das es keine schlechte Wahl war es so handzuhaben <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>Halt dich einfach an DDR-RAM und mach eine Wrapper Klasse (Hüllenklasse) um double und überlade die nötigen Operatoren.<br />
In etwa so:</p>
<pre><code class="language-cpp">class Double {
public:
    Double(double val) : value(val) { };
    double getValue() { return value };
    void setValue(double val) { value = val };
    ... // Operratorüberladungen (aber nur für die wo der linke Operant vom Typ Double ist alle anderen global)
private:
    double val;
}
... // Operatorenüberladungen (siehe oben)
</code></pre>
<p>Achja neue Operatoren zu definieren ist auch nicht möglich, sprich zu sagen &quot;/%&quot; errechnet jetzt die Wurzel der Zahl die folgt und dergleichen.</p>
<p>Gruß Baracke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1216244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1216244</guid><dc:creator><![CDATA[Baracke]]></dc:creator><pubDate>Wed, 24 Jan 2007 18:11:59 GMT</pubDate></item></channel></rss>