<?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 + für eine Vectorklasse überladen]]></title><description><![CDATA[<p>Hallo, ich möchte den Operator + für eine Vectorklasse überladen.</p>
<p>Nun habe ich im Internet 2 verschiedene Versionen gefunden wie das geht</p>
<ol>
<li></li>
</ol>
<pre><code class="language-cpp">SF3dVector operator+ (SF3dVector v, SF3dVector u)
{
	SF3dVector res;
	res.x = v.x+u.x;
	res.y = v.y+u.y;
	res.z = v.z+u.z;
	return res;
}
</code></pre>
<ol start="2">
<li></li>
</ol>
<pre><code class="language-cpp">Vector3D operator + (const Vector3D &amp;vec) 
{ 
    return Vector3D(x + vec.x, y + vec.y, z + vec.z);
}
</code></pre>
<p>Also die erste Version benutzt 2 Pararmeter.</p>
<p>Die zweite Version benutzt nur einen Parartmeter (als const Referenz) und benutzt das x der eigenen Klasse (welches ja sogar privat sein kann)</p>
<p>Welche Version ist besser? (Und warum?)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/158234/operator-für-eine-vectorklasse-überladen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 16:38:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/158234.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 03 Sep 2006 09:23:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Operator + für eine Vectorklasse überladen on Sun, 03 Sep 2006 09:23:00 GMT]]></title><description><![CDATA[<p>Hallo, ich möchte den Operator + für eine Vectorklasse überladen.</p>
<p>Nun habe ich im Internet 2 verschiedene Versionen gefunden wie das geht</p>
<ol>
<li></li>
</ol>
<pre><code class="language-cpp">SF3dVector operator+ (SF3dVector v, SF3dVector u)
{
	SF3dVector res;
	res.x = v.x+u.x;
	res.y = v.y+u.y;
	res.z = v.z+u.z;
	return res;
}
</code></pre>
<ol start="2">
<li></li>
</ol>
<pre><code class="language-cpp">Vector3D operator + (const Vector3D &amp;vec) 
{ 
    return Vector3D(x + vec.x, y + vec.y, z + vec.z);
}
</code></pre>
<p>Also die erste Version benutzt 2 Pararmeter.</p>
<p>Die zweite Version benutzt nur einen Parartmeter (als const Referenz) und benutzt das x der eigenen Klasse (welches ja sogar privat sein kann)</p>
<p>Welche Version ist besser? (Und warum?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130043</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130043</guid><dc:creator><![CDATA[MisterX]]></dc:creator><pubDate>Sun, 03 Sep 2006 09:23:00 GMT</pubDate></item><item><title><![CDATA[Reply to Operator + für eine Vectorklasse überladen on Sun, 03 Sep 2006 09:32:40 GMT]]></title><description><![CDATA[<p>die erste ist besser, wenn siue noch ein wenig aufgemotzt wird.</p>
<pre><code class="language-cpp">SF3dVector{
...
   SF3dVector&amp; operator+=(SF3dVector&amp; v)
...
   friend SF3dVector operator+ (SF3dVector const&amp; v, SF3dVector const&amp; u){
         return SF3dVector(v)+=u;
	//SF3dVector res(v);
         //res+=u;
	//return res;
   }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1130047</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130047</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 03 Sep 2006 09:32:40 GMT</pubDate></item><item><title><![CDATA[Reply to Operator + für eine Vectorklasse überladen on Sun, 03 Sep 2006 10:12:45 GMT]]></title><description><![CDATA[<p>OK, jetzt habe icjh mich für die erste Version entschieden, aber bekomme als Fehler:</p>
<p>&quot;error C2804: Binärer Operator '+' hat zu viele Parameter&quot;</p>
<p>Jetzt verstehe ich überhaupt nix mehr.<br />
Warum geht das bei denen im Beispiel 1 und bei mir nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130079</guid><dc:creator><![CDATA[MisterX]]></dc:creator><pubDate>Sun, 03 Sep 2006 10:12:45 GMT</pubDate></item><item><title><![CDATA[Reply to Operator + für eine Vectorklasse überladen on Sun, 03 Sep 2006 10:20:02 GMT]]></title><description><![CDATA[<p>hast du denn auch brav friend davorgeschrieben oder den operator außerhalb der klasse platziert? weil wenn du das nicht machst, nimmt er den ersten parameter als this. und braucht deswegen nur einen zweiten übergeben zu bekommrn.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130086</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 03 Sep 2006 10:20:02 GMT</pubDate></item><item><title><![CDATA[Reply to Operator + für eine Vectorklasse überladen on Sun, 03 Sep 2006 19:58:06 GMT]]></title><description><![CDATA[<p>hey volkhard<br />
wie würdest du das problem lösen, wenn auch gemischte arithmetik mit scalen möglich sein soll.</p>
<pre><code class="language-cpp">vector&lt;int&gt; v(1,1);

vector&lt;int&gt; a = v + 10;
vector&lt;int&gt; b = 10 + v;
vector&lt;int&gt; c = v + 10 + v;
</code></pre>
<p>wohl kaum mit eine implizite typumwandlung von T nach vector in form vom</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
class vector 
{
...
public:
vector(const T bla) //nicht explicit
: x(bla), y(bla)
{
}
</code></pre>
<p>oder?</p>
<p>würde mich interessieren wie du das machen würdest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130388</guid><dc:creator><![CDATA[_donnow]]></dc:creator><pubDate>Sun, 03 Sep 2006 19:58:06 GMT</pubDate></item><item><title><![CDATA[Reply to Operator + für eine Vectorklasse überladen on Sun, 03 Sep 2006 21:32:15 GMT]]></title><description><![CDATA[<p>ich würde mir todd veldhuizens artikel über expression templates nochmal zu gemüte führen und anfangen. kurz danach würde ich bei blitz++ vorbeischauen für noch ein paar coole tricks.<br />
aber ich weiß gar nicht, was die bedeutung von</p>
<pre><code class="language-cpp">vector&lt;int&gt; v(1,1);
vector&lt;int&gt; a = v + 10;
</code></pre>
<p>sein soll. wenn die bedeutung da ist, gibts vielleicht anwendungsspezifische tricks, die eh viel stärker als jede mikrooptimierung sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130420</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130420</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 03 Sep 2006 21:32:15 GMT</pubDate></item><item><title><![CDATA[Reply to Operator + für eine Vectorklasse überladen on Sun, 03 Sep 2006 21:18:58 GMT]]></title><description><![CDATA[<p>danke für deine antwort.<br />
blitz++ hört sich n1 an, werd ich mir mal anschauen;<br />
den artikel ebenfalls</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1130443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1130443</guid><dc:creator><![CDATA[_donnow]]></dc:creator><pubDate>Sun, 03 Sep 2006 21:18:58 GMT</pubDate></item></channel></rss>