<?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[Complex: Operator - Überladung für *]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe eine template basierte Methode in der entweder double werte oder Complex werte die ein struct sind übergeben werden.</p>
<p>Nun möchte ich eine einfache Multiplikation mit templates machen ohne eine spezialisierung der Methode machen zu müssen. Das muss doch mit operator-überladung gehen oder?</p>
<p>ich habe ein struct:</p>
<pre><code class="language-cpp">struct COMPLEX {
    double real;
    double imag;
};
</code></pre>
<p>Nun würde ich gerne eine Multiplikation zweier complexer zahlen haben:</p>
<pre><code class="language-cpp">COMPLEX a,b;

a.real = 1.0;
a.imag = 2.0;

b.real = 4.5;
b.imag = 8.9;

COMPLEX c = a * b;
</code></pre>
<p>Also die methode sieht vereinfacht so aus:</p>
<pre><code class="language-cpp">template&lt;class T&gt; T
Class&lt;T&gt;::Method(T a, T b)
{
     T c;

     c = a * b;
     return c;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/192171/complex-operator-überladung-für</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 07:59:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/192171.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 11 Sep 2007 12:26:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:29:55 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe eine template basierte Methode in der entweder double werte oder Complex werte die ein struct sind übergeben werden.</p>
<p>Nun möchte ich eine einfache Multiplikation mit templates machen ohne eine spezialisierung der Methode machen zu müssen. Das muss doch mit operator-überladung gehen oder?</p>
<p>ich habe ein struct:</p>
<pre><code class="language-cpp">struct COMPLEX {
    double real;
    double imag;
};
</code></pre>
<p>Nun würde ich gerne eine Multiplikation zweier complexer zahlen haben:</p>
<pre><code class="language-cpp">COMPLEX a,b;

a.real = 1.0;
a.imag = 2.0;

b.real = 4.5;
b.imag = 8.9;

COMPLEX c = a * b;
</code></pre>
<p>Also die methode sieht vereinfacht so aus:</p>
<pre><code class="language-cpp">template&lt;class T&gt; T
Class&lt;T&gt;::Method(T a, T b)
{
     T c;

     c = a * b;
     return c;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1363257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363257</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:29:55 GMT</pubDate></item><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:34:23 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ja das musste <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="🙂"
    /></p>
<pre><code class="language-cpp">const COMPLEX operator*(const COMPLEX&amp; a, const COMPLEX&amp; b)
{
    return Complex(){ a.real*b.real, a.img*b.img };
}
</code></pre>
<p>Edit: Die Schreibweise bei structs war doch nicht irgendwie so.<br />
Mach dann einfach ein COMPLEX temp und fülle es ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1363266</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363266</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:34:23 GMT</pubDate></item><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:36:18 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>Hi,</p>
<p>ja das musste <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="🙂"
    /></p>
<pre><code class="language-cpp">const COMPLEX operator*(const COMPLEX&amp; a, const COMPLEX&amp; b)
{
    return Complex(){ a.real*b.real, a.img*b.img };
}
</code></pre>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
<p>Ganz nebenbei enthält die Standardbibliothek bereits eine Klasse complex mit geeigneten Überladungen für mathematische Funktionen einschließlich Operatoren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1363274</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363274</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:36:18 GMT</pubDate></item><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:38:26 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<pre><code class="language-cpp">const COMPLEX operator*(const COMPLEX&amp; a, const COMPLEX&amp; b)
{
    return Complex(){ a.real*b.real, a.img*b.img };
}
</code></pre>
</blockquote>
<pre><code class="language-cpp">const COMPLEX operator*(const COMPLEX&amp; a, const COMPLEX&amp; b)
{
    Complex c;
    c.real=a.real*b.real-a.img*b.img;
    c.img=a.img*b.real+a.real*b.img;
    return c;
}
</code></pre>
<p>edit: Oh, war jan struct <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/1363276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363276</guid><dc:creator><![CDATA[Theston]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:38:26 GMT</pubDate></item><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:41:50 GMT]]></title><description><![CDATA[<p>Oder alternativ 'complex' aus der std nehmen. Liegt soweit ich mich erinnere in 'process' könnt mich aber auch irren.</p>
<p>Ich fand es auf jedenfall ganz praktisch als ich die Mandelbrotmenge (ala Apfelmänchen) &quot;erforscht&quot; habe. Zuerst hab ich auch alles selber geschreiben aber als ich fast fertig war mit dem Complex-Typ hab ich ihn endeckt, typisch.<br />
Nunja, finde er spart einiges an Zeit und ist als Template implementiert was auch schnell einen umstieg auf float zulässt um die Performance ein wenig zu steigern (macht eh kaum unterschiede wenn man das Apfelmänchen auf dem Bildschirm zaubert)</p>
<p>Gruß<br />
Baracke</p>
<p>PS: camper war schneller</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1363286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363286</guid><dc:creator><![CDATA[Baracke_out]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:41:50 GMT</pubDate></item><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:44:58 GMT]]></title><description><![CDATA[<p>danke euch</p>
<p>Hmm....<br />
wohin gehört das denn? In die structure rein oder in die Template Klasse?</p>
<p>Ich kriege beide male folgenden Fehler:</p>
<pre><code>Fehler: »const COMPLEX Class&lt;T&gt;::operator*(const COMPLEX&amp;, const COMPLEX&amp;) [with T = double]« muss entweder null oder ein Argument nehmen
</code></pre>
<p>ich weiß dass es einen comlex typ gibt aber ich habe es bewusst selber gemacht <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1363287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363287</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:44:58 GMT</pubDate></item><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:46:12 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
</blockquote>
<p>Bezieht sich das auf die falsche mathematische Multiplikation <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="🙂"
    /> oder darauf das ich versucht habe, diese Schreibweise:</p>
<pre><code class="language-cpp">COMPLEX aa = { 5, 5 };
</code></pre>
<p>irgendwie als return hinzubekommen ? ( Ein struct mit C'tor wäre schöner dafür )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1363289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363289</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:46:12 GMT</pubDate></item><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:45:44 GMT]]></title><description><![CDATA[<p>Mati schrieb:</p>
<blockquote>
<p>wohin gehört das denn? In die structure rein oder in die Template Klasse?</p>
</blockquote>
<p>In keins von beiden :), sollte global sein ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1363293</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363293</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:45:44 GMT</pubDate></item><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:50:39 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /><br />
Was echt? Bin überrascht....also global über einer Klasse wie z.B ein struct?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1363300</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363300</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:50:39 GMT</pubDate></item><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:52:19 GMT]]></title><description><![CDATA[<p>Ja im Endeffekt ist es eine Funktion die von operator* aufgerufen wird und wenn du diese Funktion überall benutzen willst, was üblich für op* sein sollte, dann muss sie halt global irgendwo stehen, wo der Compiler sie finden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1363302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363302</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:52:19 GMT</pubDate></item><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:54:42 GMT]]></title><description><![CDATA[<p>argh....jetzt kriege ich multiple definitions of operator *...</p>
<p>kann es sein wenn ich einen Pointer auf einen COMPLEX typ anlege dieser mit der multiplikation durcheinanderkommmt?</p>
<p>also sowas?</p>
<pre><code class="language-cpp">COMPLEX* a = ....
</code></pre>
<p>was tun?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1363308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363308</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:54:42 GMT</pubDate></item><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:56:32 GMT]]></title><description><![CDATA[<p>Mati schrieb:</p>
<blockquote>
<p>argh....jetzt kriege ich multiple definitions of operator *...</p>
</blockquote>
<p>Vermutlich ODR verletzt - zieh die Implementierungen aus den Headern heraus oder mach sie inline (ist aber kein operator-Problem).</p>
<blockquote>
<p>kann es sein wenn ich einen Pointer auf einen COMPLEX typ anlege dieser mit der multiplikation durcheinanderkommmt?</p>
</blockquote>
<p>Nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1363309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363309</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:56:32 GMT</pubDate></item><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:57:04 GMT]]></title><description><![CDATA[<p>Mati schrieb:</p>
<blockquote>
<p>was tun?</p>
</blockquote>
<p>Kein &quot;unnötigen&quot; Pointer benutzen <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="😉"
    /><br />
Und zeig mal bitte, wie dein Code momentan aussieht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1363311</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363311</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:57:04 GMT</pubDate></item><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:59:41 GMT]]></title><description><![CDATA[<p>Jap, inline wars....jetzt muss ich nur noch rausfinden warum....?</p>
<p>Die pointer sind leider Notwendig...und der code würde so wie er vorliegt wohl den rahmen sprengen...</p>
<p>in der main (wo der compiler mit multiple schreit) steht im grunde nur:</p>
<p>Matrix&lt;COMPLEX&gt; *A_COMPLEX = NULL;</p>
<p>...also ich weiß net...aber mit inline gehts...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1363313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363313</guid><dc:creator><![CDATA[Mati]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:59:41 GMT</pubDate></item><item><title><![CDATA[Reply to Complex: Operator - Überladung für * on Tue, 11 Sep 2007 12:59:44 GMT]]></title><description><![CDATA[<p>Mati schrieb:</p>
<blockquote>
<p>Jap, inline wars....jetzt muss ich nur noch rausfinden warum....?</p>
</blockquote>
<p>Weil sie, wenn sie im Header stehen, mehrfach definiert werden. Mit inline sagst du, diese Definitionen sind gleich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1363315</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1363315</guid><dc:creator><![CDATA[Testestest]]></dc:creator><pubDate>Tue, 11 Sep 2007 12:59:44 GMT</pubDate></item></channel></rss>