<?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[Objekt als Rückgabetyp von Memberfunktion]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich stehe noch am Anfang der objektorientieren Programmierung und habe da ein Problem.<br />
Zu erst einmal das Problem, was ich lösen möchte.<br />
Ich möchte zweidimensionale Vektoren erzeugen, mit einer Class Vector, die ich dann Addieren und Subtrahieren möchte und das Ergebniss möchte ich dann wiederrum in einen Vector schreiben. Laut Aufgabenstellung sollte die Klasse Addieren und Subtrahieren als Memberfunktionen haben.</p>
<p>Zu erst einmal habe ich mir meine Klasse Vector in eine Headderdatei geschrieben:</p>
<pre><code>//Header Vector.h
#include &lt;iostream&gt;

class Vector
{
	private:

		double x;
		double y;

	public:

		//Konstruktor
		Vector() : x(0.0), y(0.0)
		{
		}

		Vector(double _x, double _y) : x(_x), y(_y)
		{
		}

		//Memberfunktionen
		void get_vector()
		{
			std::cout &lt;&lt; &quot;(&quot; &lt;&lt; x &lt;&lt; &quot;|&quot; &lt;&lt; y &lt;&lt; &quot;)&quot; &lt;&lt; std::endl;
		}

		double get_x()
		{
			return x;
		}

		double get_y()
		{
			return y;
		}

		Vector Addieren(Vector _v1, Vector _v2)
		{
			Vector sum_vec;

			sum_vec.x = _v1.x + _v2.x;
			sum_vec.y = _v1.y + _v2.y;

			return sum_vec;
		}

		Vector Subtrahieren(Vector _v1, Vector _v2)
		{
			Vector sum_vec;

			sum_vec.x = _v1.x - _v2.x;
			sum_vec.y = _v1.y - _v2.y; 	

			return sum_vec;
		}
};
</code></pre>
<p>Die Memberfunctionen übernehmen meine Vektoren als Übergabeargument und sollen als Ergebniss wieder einen Vector zurückgeben.</p>
<p>In Main dann werden meine beiden Vectoren die ich Addieren / Subtrahieren möchte gebildet und ausserdem zwei weitere Vectoren die die Ergebnisse aufnehmen sollen.</p>
<pre><code>//main.cpp
#include &lt;iostream&gt;
#include &quot;Vector.h&quot;

int main()
{
	Vector vec1(1 ,2), vec2(3, 4), vec3, vec4;

	vec1.get_vector();
	vec2.get_vector();

	vec3.Addieren(vec1, vec2);
	vec3.get_vector();

	vec4.Subtrahieren(vec1, vec4);
	vec4.get_vector();

	return 0;
}
</code></pre>
<p>in meinen Ergebniss-Vectoren vec3 und vec4 wird aber leider das Ergebniss nicht reingeschrieben sondern es wird (0|0) ausgeben, also wie der Standardkonstruktor das initialisiert.<br />
Vielleicht erkennt einer meinen Fehler oder ich habe ganz großen Unsinn gebastelt.</p>
<p>Ich bedanke mich auf jeden Fall schonmal.</p>
<p>Gruß</p>
<p>Alex</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/335622/objekt-als-rückgabetyp-von-memberfunktion</link><generator>RSS for Node</generator><lastBuildDate>Fri, 24 Apr 2026 09:30:37 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/335622.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 30 Nov 2015 14:59:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objekt als Rückgabetyp von Memberfunktion on Mon, 30 Nov 2015 14:59:34 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich stehe noch am Anfang der objektorientieren Programmierung und habe da ein Problem.<br />
Zu erst einmal das Problem, was ich lösen möchte.<br />
Ich möchte zweidimensionale Vektoren erzeugen, mit einer Class Vector, die ich dann Addieren und Subtrahieren möchte und das Ergebniss möchte ich dann wiederrum in einen Vector schreiben. Laut Aufgabenstellung sollte die Klasse Addieren und Subtrahieren als Memberfunktionen haben.</p>
<p>Zu erst einmal habe ich mir meine Klasse Vector in eine Headderdatei geschrieben:</p>
<pre><code>//Header Vector.h
#include &lt;iostream&gt;

class Vector
{
	private:

		double x;
		double y;

	public:

		//Konstruktor
		Vector() : x(0.0), y(0.0)
		{
		}

		Vector(double _x, double _y) : x(_x), y(_y)
		{
		}

		//Memberfunktionen
		void get_vector()
		{
			std::cout &lt;&lt; &quot;(&quot; &lt;&lt; x &lt;&lt; &quot;|&quot; &lt;&lt; y &lt;&lt; &quot;)&quot; &lt;&lt; std::endl;
		}

		double get_x()
		{
			return x;
		}

		double get_y()
		{
			return y;
		}

		Vector Addieren(Vector _v1, Vector _v2)
		{
			Vector sum_vec;

			sum_vec.x = _v1.x + _v2.x;
			sum_vec.y = _v1.y + _v2.y;

			return sum_vec;
		}

		Vector Subtrahieren(Vector _v1, Vector _v2)
		{
			Vector sum_vec;

			sum_vec.x = _v1.x - _v2.x;
			sum_vec.y = _v1.y - _v2.y; 	

			return sum_vec;
		}
};
</code></pre>
<p>Die Memberfunctionen übernehmen meine Vektoren als Übergabeargument und sollen als Ergebniss wieder einen Vector zurückgeben.</p>
<p>In Main dann werden meine beiden Vectoren die ich Addieren / Subtrahieren möchte gebildet und ausserdem zwei weitere Vectoren die die Ergebnisse aufnehmen sollen.</p>
<pre><code>//main.cpp
#include &lt;iostream&gt;
#include &quot;Vector.h&quot;

int main()
{
	Vector vec1(1 ,2), vec2(3, 4), vec3, vec4;

	vec1.get_vector();
	vec2.get_vector();

	vec3.Addieren(vec1, vec2);
	vec3.get_vector();

	vec4.Subtrahieren(vec1, vec4);
	vec4.get_vector();

	return 0;
}
</code></pre>
<p>in meinen Ergebniss-Vectoren vec3 und vec4 wird aber leider das Ergebniss nicht reingeschrieben sondern es wird (0|0) ausgeben, also wie der Standardkonstruktor das initialisiert.<br />
Vielleicht erkennt einer meinen Fehler oder ich habe ganz großen Unsinn gebastelt.</p>
<p>Ich bedanke mich auf jeden Fall schonmal.</p>
<p>Gruß</p>
<p>Alex</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477648</guid><dc:creator><![CDATA[AlexR]]></dc:creator><pubDate>Mon, 30 Nov 2015 14:59:34 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt als Rückgabetyp von Memberfunktion on Mon, 30 Nov 2015 15:27:13 GMT]]></title><description><![CDATA[<p>Du schreibst das Ergebnis in einen Rückgabewert, verwendest diesen aber nicht weiter.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477654</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 30 Nov 2015 15:27:13 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt als Rückgabetyp von Memberfunktion on Mon, 30 Nov 2015 17:10:34 GMT]]></title><description><![CDATA[<p>Das was daddy_felix geschrieben hat.</p>
<p>Und: wenn die Funktionen Addieren und Subtrahieren <code>this</code> nicht angreifen, dann sollten sie normalerweise <code>static</code> sein.</p>
<p>Also</p>
<pre><code class="language-cpp">static Vector Addieren(Vector _v1, Vector _v2)
        {
            Vector sum_vec;

            sum_vec.x = _v1.x + _v2.x;
            sum_vec.y = _v1.y + _v2.y;

            return sum_vec;
        }

        static Vector Subtrahieren(Vector _v1, Vector _v2)
        {
            Vector sum_vec;

            sum_vec.x = _v1.x - _v2.x;
            sum_vec.y = _v1.y - _v2.y;  

            return sum_vec;
        }

// ...

    vec3 = Vector::Addieren(vec1, vec2);
    vec3.get_vector();

    vec4 = Vector::Subtrahieren(vec1, vec4);
    vec4.get_vector();
</code></pre>
<p>Weiters: Funktionen wie Addieren und Subtrahieren nennt man normalerweise <code>operator +</code> bzw. <code>operator -</code> , dann kann man nämlich schreiben:</p>
<pre><code class="language-cpp">vec3 = vec1 + vec2;
    vec3.get_vector();

    vec4 = vec1 - vec4;
    vec4.get_vector();
</code></pre>
<p>Und Funktionen wie <code>get_vector</code> macht man normalerweise als &quot;stream insertion operator&quot; (=&gt; googeln), dann kann man schreiben</p>
<pre><code class="language-cpp">vec3 = vec1 + vec2;
    std::cout &lt;&lt; &quot;vec3 = &quot; &lt;&lt; vec3 &lt;&lt; &quot;\n&quot;;

    vec4 = vec1 - vec4;
    std::cout &lt;&lt; &quot;vec4 = &quot; &lt;&lt; vec4 &lt;&lt; &quot;\n&quot;;
</code></pre>
<p>Und dann sieht das ganze schon fast professionell aus <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2477678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477678</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 30 Nov 2015 17:10:34 GMT</pubDate></item><item><title><![CDATA[Reply to Objekt als Rückgabetyp von Memberfunktion on Wed, 02 Dec 2015 13:02:02 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>vielen Dank für eure Hilfe. Stehe wie gesagt noch am Anfang.<br />
Das mit dem this Zeiger habe ich rausgefunden, womit mein ursprüngliches Problem gelöst wurde.<br />
Die Einwände von hustbaer hören sich sehr vernüftig an, ich werde das mal ausprobieren.</p>
<p>Danke nochmals</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2477922</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2477922</guid><dc:creator><![CDATA[AlexR]]></dc:creator><pubDate>Wed, 02 Dec 2015 13:02:02 GMT</pubDate></item></channel></rss>