<?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[Unärer &amp;quot;-&amp;quot; Operator]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe mal wieder eine Frage. Ich habe in meiner Klasse<br />
für Vektoren den &quot;-&quot; Operator überladen.</p>
<p>Nun möchte ich aber auch den unären &quot;-&quot; Operator überladen.<br />
damit auch sowas möglich ist:</p>
<p>CVektor v1;</p>
<p>CVektor v2 = -v1;</p>
<p>So sieht es bis jetzt aus (Auszug)</p>
<p>Im Headerfile:</p>
<p>CVektor operator- (CVektor); // Subtraktion zweier Vektoren</p>
<p>Im C++ File:</p>
<p>CVektor CVektor::operator- (CVektor b)<br />
{<br />
CVektor c;</p>
<p>c.m_x = m_x - b.m_x;<br />
c.m_y = m_y - b.m_y;<br />
c.m_z = m_z - b.m_z;<br />
if (m_w == 1.0 || b.m_w == 1.0) c.m_w = 1.0; // Mindestens ein Ortsvektor<br />
else c.m_w = 0.0; // Zwei Vektoren addieren</p>
<p>return c;<br />
}</p>
<p>Viele Dank im Voraus,</p>
<p>Andreas</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/193039/unärer-quot-quot-operator</link><generator>RSS for Node</generator><lastBuildDate>Sun, 27 Sep 2026 19:21:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/193039.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 Sep 2007 10:32:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Unärer &amp;quot;-&amp;quot; Operator on Fri, 21 Sep 2007 10:32:56 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich habe mal wieder eine Frage. Ich habe in meiner Klasse<br />
für Vektoren den &quot;-&quot; Operator überladen.</p>
<p>Nun möchte ich aber auch den unären &quot;-&quot; Operator überladen.<br />
damit auch sowas möglich ist:</p>
<p>CVektor v1;</p>
<p>CVektor v2 = -v1;</p>
<p>So sieht es bis jetzt aus (Auszug)</p>
<p>Im Headerfile:</p>
<p>CVektor operator- (CVektor); // Subtraktion zweier Vektoren</p>
<p>Im C++ File:</p>
<p>CVektor CVektor::operator- (CVektor b)<br />
{<br />
CVektor c;</p>
<p>c.m_x = m_x - b.m_x;<br />
c.m_y = m_y - b.m_y;<br />
c.m_z = m_z - b.m_z;<br />
if (m_w == 1.0 || b.m_w == 1.0) c.m_w = 1.0; // Mindestens ein Ortsvektor<br />
else c.m_w = 0.0; // Zwei Vektoren addieren</p>
<p>return c;<br />
}</p>
<p>Viele Dank im Voraus,</p>
<p>Andreas</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370008</guid><dc:creator><![CDATA[AndreasBo]]></dc:creator><pubDate>Fri, 21 Sep 2007 10:32:56 GMT</pubDate></item><item><title><![CDATA[Reply to Unärer &amp;quot;-&amp;quot; Operator on Fri, 21 Sep 2007 10:39:25 GMT]]></title><description><![CDATA[<p>Da hast du sogar zwei Möglichkeiten dafür:</p>
<pre><code class="language-cpp">CVector CVector::operator-()
{
  return CVector(0)-*this;
}
//oder
CVector CVector::operator-()
{
  return -1 * *this;
}
</code></pre>
<p>(Alternativ kannst du auch globale Funktionen <code>CVector operator-(const CVector&amp; op);</code> verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370017</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 21 Sep 2007 10:39:25 GMT</pubDate></item><item><title><![CDATA[Reply to Unärer &amp;quot;-&amp;quot; Operator on Fri, 21 Sep 2007 10:43:01 GMT]]></title><description><![CDATA[<p>in deiner klasse:</p>
<pre><code class="language-cpp">CVector operator-();
</code></pre>
<p>achja: übergibt bitte bei dem anderen operator die parameter als konstante referenzen, also:</p>
<pre><code class="language-cpp">CVektor operator- (const CVektor&amp;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1370021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370021</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Fri, 21 Sep 2007 10:43:01 GMT</pubDate></item><item><title><![CDATA[Reply to Unärer &amp;quot;-&amp;quot; Operator on Fri, 21 Sep 2007 10:52:56 GMT]]></title><description><![CDATA[<p>und wenn du dir den Thread unter <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-193021.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-193021.html</a> anschaust bzw.<br />
<a href="http://www.gotw.ca/gotw/004.htm" rel="nofollow">http://www.gotw.ca/gotw/004.htm</a> Punkt 4, dann machst du operator- nicht zum member sondern ueberlaedst den globalen operator- fuer zwei <code>CVector</code> en <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/1370032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370032</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 21 Sep 2007 10:52:56 GMT</pubDate></item><item><title><![CDATA[Reply to Unärer &amp;quot;-&amp;quot; Operator on Fri, 21 Sep 2007 11:02:41 GMT]]></title><description><![CDATA[<p>nur wenn das sinnvoll möglich ist. was es in diesem fall tatsächlich wäre, wenn man noch den operator+= als member-funktion implementierte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370041</guid><dc:creator><![CDATA[ghorst]]></dc:creator><pubDate>Fri, 21 Sep 2007 11:02:41 GMT</pubDate></item><item><title><![CDATA[Reply to Unärer &amp;quot;-&amp;quot; Operator on Fri, 21 Sep 2007 18:17:36 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>Da hast du sogar zwei Möglichkeiten dafür:</p>
<pre><code class="language-cpp">CVector CVector::operator-()
{
  return CVector(0)-*this;
}
//oder
CVector CVector::operator-()
{
  return -1 * *this;
}
</code></pre>
</blockquote>
<p>Das ist aber nicht schön. Ich würde folgendes empfehlen:</p>
<pre><code class="language-cpp">CVector CVector::operator -() const
{
    return CVector(-m_x, -m_y, -m_z, -m_w);
}
</code></pre>
<p>Entsprechenden ctor natürlich vorausgesetzt. Der sollte aber sowieso existieren, notfalls non-public.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1370305</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1370305</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Fri, 21 Sep 2007 18:17:36 GMT</pubDate></item></channel></rss>