<?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,<br />
ich möchte gerne folgenden Aufruf ermoeglichen:</p>
<pre><code>Haus A;
A+(3-21);
</code></pre>
<p>So meine Idee:</p>
<pre><code>Haus operator+(const Haus &amp;H1, Haus operator-(const int Nr_1, const int Nr_2))
{
...															
}
</code></pre>
<p>doch leider findet er die programmierte Überladung nicht?<br />
vll. rufe ich es auch falsch auf mit A+(3-21). aber auch A+3-21 geht nicht.</p>
<p>Danke für jede Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/231180/operator-überladen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 26 Sep 2026 00:44:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/231180.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Jan 2009 09:09:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operator überladen on Wed, 07 Jan 2009 09:09:17 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich möchte gerne folgenden Aufruf ermoeglichen:</p>
<pre><code>Haus A;
A+(3-21);
</code></pre>
<p>So meine Idee:</p>
<pre><code>Haus operator+(const Haus &amp;H1, Haus operator-(const int Nr_1, const int Nr_2))
{
...															
}
</code></pre>
<p>doch leider findet er die programmierte Überladung nicht?<br />
vll. rufe ich es auch falsch auf mit A+(3-21). aber auch A+3-21 geht nicht.</p>
<p>Danke für jede Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640925</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640925</guid><dc:creator><![CDATA[Le0nidas]]></dc:creator><pubDate>Wed, 07 Jan 2009 09:09:17 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen on Wed, 07 Jan 2009 09:11:23 GMT]]></title><description><![CDATA[<p>Dafür reicht es wenn du den operator+ überlädst, weil die Subtraktion, ja schließlich mit natürlichen Zahlen abgewickelt wird.Fals deine subtraktion aber einen Negtive Zahl ergibt, solltest du den operator- noch mit zusätlich implementieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640927</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640927</guid><dc:creator><![CDATA[Firefighter]]></dc:creator><pubDate>Wed, 07 Jan 2009 09:11:23 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen on Wed, 07 Jan 2009 09:26:27 GMT]]></title><description><![CDATA[<blockquote>
<p>Dafür reicht es wenn du den operator+ überlädst, weil die Subtraktion, ja schließlich mit natürlichen Zahlen abgewickelt wird.Fals deine subtraktion aber einen Negtive Zahl ergibt, solltest du den operator- noch mit zusätlich implementieren.</p>
</blockquote>
<p>Danke für deine schnelle Antwort, aber in dem Abschnitt:</p>
<pre><code>operator-(const int Nr_1, const int Nr_2)
</code></pre>
<p>möchte ich keine Subtraktion erreichen.</p>
<p>Ich möchte quasi. alle Häuser zwischen Nr_1 und Nr_2 setzen. Nr_1 und Nr_2 dienen sozusagen als Start- und Endwert.</p>
<p>Seblst wenn es andere Lösungsansätze gibt, interessiert es mich, wie die oben programmierte Überladung aufzurufen ist <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>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640933</guid><dc:creator><![CDATA[Le0nidas]]></dc:creator><pubDate>Wed, 07 Jan 2009 09:26:27 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen on Wed, 07 Jan 2009 09:28:36 GMT]]></title><description><![CDATA[<p>die oben programmierte Überladung geht so nciht, ich denk ma, die kompiliert auch so nicht...<br />
Also so geht das nicht.</p>
<p>Wenn du dein Verhalten erreichen willst, musst du über expression templates gehen (eine Möglichkeit). dies ist jedoch ein ziemlich kompliziertes Thema, aber wenn du willst, kannst das ja ma in google eingeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640934</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640934</guid><dc:creator><![CDATA[Maxi]]></dc:creator><pubDate>Wed, 07 Jan 2009 09:28:36 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen on Wed, 07 Jan 2009 09:53:44 GMT]]></title><description><![CDATA[<blockquote>
<p>die oben programmierte Überladung geht so nciht, ich denk ma, die kompiliert auch so nicht...<br />
Also so geht das nicht.</p>
<p>Wenn du dein Verhalten erreichen willst, musst du über expression templates gehen (eine Möglichkeit). dies ist jedoch ein ziemlich kompliziertes Thema, aber wenn du willst, kannst das ja ma in google eingeben.</p>
</blockquote>
<p>Also er nimmt das schon hin, aber wenn ich es dann versuche aufzurufen, findet er den Operator nicht. Auf die Idee bin ich durch diese Seite hier gekommen: <a href="http://public.tfh-berlin.de/~kempfer/skript_cpp/Kap11.html" rel="nofollow">http://public.tfh-berlin.de/~kempfer/skript_cpp/Kap11.html</a><br />
da ist gleich am Anfang eine Tabelle mit Operatoraufrufen und deren Notation zu sehen. In der Letzten Zeile der Tabelle ist folgendes zu finden:<br />
-(a + b * 3) mit der Notation operator- (operator+ (a, operator* (b, 3)))</p>
<p>daher müsste sowas gehen?</p>
<p>Schöne Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640952</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640952</guid><dc:creator><![CDATA[Le0nidas]]></dc:creator><pubDate>Wed, 07 Jan 2009 09:53:44 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen on Wed, 07 Jan 2009 10:16:41 GMT]]></title><description><![CDATA[<p>Le0nidas schrieb:</p>
<blockquote>
<p>In der Letzten Zeile der Tabelle ist folgendes zu finden:<br />
-(a + b * 3) mit der Notation operator- (operator+ (a, operator* (b, 3)))</p>
<p>daher müsste sowas gehen?</p>
</blockquote>
<p>Schau dir es nochmal genau an. Jeder operator+*- nimmt nur 2 Parameter...</p>
<p>Ergo: das was du machen willst ist 1) fragwürdig und 2) nur mit expression templates lösbar.</p>
<p>Du kannst nämlich keinen operator+ mit 3 parametern definieren und auch einen operator+(int,int) darfst du nicht selber definieren...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640968</guid><dc:creator><![CDATA[Shade Of Mine]]></dc:creator><pubDate>Wed, 07 Jan 2009 10:16:41 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen on Wed, 07 Jan 2009 10:20:03 GMT]]></title><description><![CDATA[<p>Le0nidas schrieb:</p>
<blockquote>
<p>...<br />
da ist gleich am Anfang eine Tabelle mit Operatoraufrufen und deren Notation zu sehen. In der Letzten Zeile der Tabelle ist folgendes zu finden:<br />
-(a + b * 3) mit der Notation operator- (operator+ (a, operator* (b, 3)))</p>
<p>daher müsste sowas gehen?</p>
</blockquote>
<p>Da hat der Skripteschreiber nur zusammengestellt, welche Operatoren verwendet werden. Diese werden aber in Reihenfolge, nicht in Kombination ausgewertet.</p>
<p>Davon abgesehen finde ich deine Notation auch nicht wirklich lesbar. Operatorüberladungen können die Lesbarkeit in manchen Bereichen erhöhen (gerade wenn sie wie in der Mathematik üblich verwendet werden), in anderen Bereichen sind sprechende Methoden um Klassen besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640969</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640969</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 07 Jan 2009 10:20:03 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen on Wed, 07 Jan 2009 10:47:04 GMT]]></title><description><![CDATA[<blockquote>
<p>Da hat der Skripteschreiber nur zusammengestellt, welche Operatoren verwendet werden. Diese werden aber in Reihenfolge, nicht in Kombination ausgewertet.</p>
</blockquote>
<blockquote>
<p>Schau dir es nochmal genau an. Jeder operator+*- nimmt nur 2 Parameter...</p>
<p>Ergo: das was du machen willst ist 1) fragwürdig und 2) nur mit expression templates lösbar.</p>
<p>Du kannst nämlich keinen operator+ mit 3 parametern definieren und auch einen operator+(int,int) darfst du nicht selber definieren...</p>
</blockquote>
<p>Stimmt!</p>
<p>Danke euch für die Aufklärung!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640982</guid><dc:creator><![CDATA[Le0nidas]]></dc:creator><pubDate>Wed, 07 Jan 2009 10:47:04 GMT</pubDate></item><item><title><![CDATA[Reply to Operator überladen on Wed, 07 Jan 2009 12:24:50 GMT]]></title><description><![CDATA[<p>Hier würde ich auch zu einer Methode raten, das ist wohl das naheliegendste.</p>
<p>Ausserdem, wer &quot;setzt&quot; Häuser? Wohl kaum das Haus selbst. Also entweder eine eigene Klasse oder freie Funktion dafür einrichten oder notfalls eine statische Memberfunktion der Haus-Klasse verwenden.</p>
<p>Dann hast du beispielsweise als freie Funktion:</p>
<pre><code class="language-cpp">void SetzeHäuser(int Erstes, int Letztes);
</code></pre>
<p>Wobei du noch überlegen solltest, ob das Letzte dazugehört oder wie bei den Iterator-Ranges von der Menge ausgeschlossen ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1641032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1641032</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 07 Jan 2009 12:24:50 GMT</pubDate></item></channel></rss>