<?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[Objektverweis an Klasse übergeben]]></title><description><![CDATA[<p>Moin,</p>
<p>ich schreibe gerade mehrere Klassen für mein Autopilotprojekt. Dafür gehören auch eine Klasse zum Kodieren der Daten zum senden, und eine zum Dekodieren der Daten. Nachdem die Daten Dekodiert werden, werden sie in Public Variablen, in der Klasse gespeichert. Das Problem ist jetzt aber, dass die Klasse zum Kodieren der Daten, auch auf die Dekodierten Variablen zugreifen können muss. In der Klasse zum Kodieren der Daten, greife ich auch über ein Objektverweis auf die Variablen in der Klasse zu, aber wenn ich über den einen Verweis die Daten, ändere, bleiben die Daten im 2. Objektvergleich gleich. Ich habe versucht, den Objektverweis aus dem Hauptprogramm an die Klasse zu übergeben, aber ich habe es nicht geschafft. Wie kann ich einen Objektverweis an eine Klasse übergeben?</p>
<p>MfG<br />
Philipp</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/273128/objektverweis-an-klasse-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 11:36:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/273128.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 31 Aug 2010 15:58:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Objektverweis an Klasse übergeben on Tue, 31 Aug 2010 15:58:45 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>ich schreibe gerade mehrere Klassen für mein Autopilotprojekt. Dafür gehören auch eine Klasse zum Kodieren der Daten zum senden, und eine zum Dekodieren der Daten. Nachdem die Daten Dekodiert werden, werden sie in Public Variablen, in der Klasse gespeichert. Das Problem ist jetzt aber, dass die Klasse zum Kodieren der Daten, auch auf die Dekodierten Variablen zugreifen können muss. In der Klasse zum Kodieren der Daten, greife ich auch über ein Objektverweis auf die Variablen in der Klasse zu, aber wenn ich über den einen Verweis die Daten, ändere, bleiben die Daten im 2. Objektvergleich gleich. Ich habe versucht, den Objektverweis aus dem Hauptprogramm an die Klasse zu übergeben, aber ich habe es nicht geschafft. Wie kann ich einen Objektverweis an eine Klasse übergeben?</p>
<p>MfG<br />
Philipp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946645</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946645</guid><dc:creator><![CDATA[lord-maricek]]></dc:creator><pubDate>Tue, 31 Aug 2010 15:58:45 GMT</pubDate></item><item><title><![CDATA[Reply to Objektverweis an Klasse übergeben on Tue, 31 Aug 2010 16:01:05 GMT]]></title><description><![CDATA[<p>Zu viele Kommas, zu wenig Code. Zeig ein minimales Code-Beispiel, das dein Problem illustriert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946647</guid><dc:creator><![CDATA[Nukularfüsiker]]></dc:creator><pubDate>Tue, 31 Aug 2010 16:01:05 GMT</pubDate></item><item><title><![CDATA[Reply to Objektverweis an Klasse übergeben on Tue, 31 Aug 2010 16:08:51 GMT]]></title><description><![CDATA[<p>Ok sorry...<br />
main.cpp:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &quot;waypoint.h&quot;
#include &quot;SerialDecode.h&quot;
#include &quot;SerialEncode.h&quot;
//#include &quot;SerialDecode.h&quot;

using namespace std;

void main(){
	SerialDecode se;
	SerialEncode ne = SerialEncode(se);
	se.servo = 95;
	ne.show();
	cout &lt;&lt; ne.show() &lt;&lt; endl;
	system(&quot;PAUSE&quot;);
}
</code></pre>
<p>Ausschnitt aus Klasse Decode:</p>
<pre><code class="language-cpp">#pragma once
class SerialDecode
{
public:
	/*Variablen*/
	//New Waypoint
	int new_ID, next_ID;
	float lat,lon, distance;
	//Steuerung
	int servo,motor,bow;
	//Navigation
	int course;

	/*Funktionen*/
	void Decode(char input[500]);
	SerialDecode(void);
	~SerialDecode(void);
private:
	//Steer Commands
	void Decode_servo(char input[500]);
	void Decode_motor(char input[500]);
	void Decode_bow(char input[500]);
	//Navigation Commands
	void Decode_new_waypoint(char input[500]);
	void Decode_direct(char input[500]);
	void Decode_course(char input[500]);
	void Decode_distance(char input[500]);
};
</code></pre>
<p>Auschnitt aus Klasse Encode:</p>
<pre><code class="language-cpp">SerialEncode.h:
#include &quot;SerialDecode.h&quot;
#pragma once
class SerialEncode
{
public:
	SerialEncode(SerialDecode *a);
	~SerialEncode(void);
	int show();
private:
	SerialDecode decode;
};

SerialEncode.cpp:
#include &quot;SerialEncode.h&quot;
#include &quot;SerialDecode.h&quot;

SerialEncode::SerialEncode(SerialDecode *a)
{
	this-&gt;decode = *a;
}

SerialEncode::~SerialEncode(void)
{
}

int SerialEncode::show(){
	return this-&gt;decode.servo;
}
</code></pre>
<p>Ich möchte jetzt, das ich auf Klasse SerialDecode aus der Klasse SerialEncode zzugreifen kann, aber mit dem gleichen Objektverweis, wie in der main.cpp, damit die Daten gleich bleiben.</p>
<p>Philipp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946651</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946651</guid><dc:creator><![CDATA[lord-maricek]]></dc:creator><pubDate>Tue, 31 Aug 2010 16:08:51 GMT</pubDate></item><item><title><![CDATA[Reply to Objektverweis an Klasse übergeben on Tue, 31 Aug 2010 16:19:43 GMT]]></title><description><![CDATA[<p>Du machst ja auch eine Kopie und keinen Verweis. decode in SerialEncode muss eine referenz oder ein Pointer sein.</p>
<p>edit: Obiges ist eine rein technische Antwort. Ich habe mir jetzt nicht angeguckt, ob dieser Verweis überhaupt sinnvoll ist. Solche Konstruktionen finde ich immer etwas merkwürdig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946656</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946656</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 31 Aug 2010 16:19:43 GMT</pubDate></item><item><title><![CDATA[Reply to Objektverweis an Klasse übergeben on Tue, 31 Aug 2010 16:19:43 GMT]]></title><description><![CDATA[<p>Ich arbeite noch nicht solange mit OOP, und weiß deswegen noch nicht viel.<br />
Wie kann ich das machen?</p>
<p>Philipp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946657</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946657</guid><dc:creator><![CDATA[lord-maricek]]></dc:creator><pubDate>Tue, 31 Aug 2010 16:19:43 GMT</pubDate></item><item><title><![CDATA[Reply to Objektverweis an Klasse übergeben on Tue, 31 Aug 2010 16:22:22 GMT]]></title><description><![CDATA[<p>Ah, ein C-Programmierer. <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="🙂"
    /><br />
In C++ verwendet man eher std::string statt char[]. (void) für eine leere Argumentliste ist unüblich. public-Member auch, aber darüber könnte man streiten. const-correctness wird als wichtig angesehen, dein Code hat sie nicht; ist nicht überlebenswichtig, aber unschön. IMHO sind Referenzen Pointern vorzuziehen.</p>
<pre><code class="language-cpp">SerialEncode ne = SerialEncode(se); // übergibt ein SerialDecode per Wert an eine SerialEncode-Instanz
</code></pre>
<pre><code class="language-cpp">SerialEncode(SerialDecode *a); // erwartet aber einen Pointer auf ein SerialDecode
</code></pre>
<p>Richtig wäre:</p>
<pre><code class="language-cpp">SerialEncode ne(&amp;se); // oder besser noch, per Referenz statt per Pointer
</code></pre>
<p>Vielleicht mal ein C++-Einsteiger-Tutorial lesen. C und C++ unterscheiden sich gewaltig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946658</guid><dc:creator><![CDATA[Nukularfüsiker]]></dc:creator><pubDate>Tue, 31 Aug 2010 16:22:22 GMT</pubDate></item><item><title><![CDATA[Reply to Objektverweis an Klasse übergeben on Tue, 31 Aug 2010 16:41:13 GMT]]></title><description><![CDATA[<p>Ach, wenn wir schon bei Codeverbesserungen sind, habe ich noch ein paar mehr:</p>
<ul>
<li><code>stdlib.h</code> ist veraltet, das heißt <code>cstdlib</code> .</li>
<li>Rückgabetyp von <code>main</code> muss immer <code>int</code> sein.</li>
<li>Zeile 14 in main.cpp macht gar nichts.</li>
<li><code>system(&quot;PAUSE&quot;)</code> ist nicht portabel, siehe FAQ um das gleiche zu erreichen.</li>
<li><code>#pragma once</code> ist auch nicht portabel und selbst auf Compilern die es kennen &quot;deprecated&quot;. Nutze klassische Include-Guards.</li>
<li>Aufbau der Klassen: Die Variablen alle public und die Funktionen alle private? Wo hast du dieses Design denn her?</li>
<li>Kommentare im C-Stil (/* ... */) sind in C++ eher selten genutzt, weil meistens unpraktisch. Insbesondere wenn der Kommentar ohnehin nur eine Zeile lang ist.</li>
<li><code>void</code> muss man in der Argumentenliste nicht angeben. In C++ heißt eine leere Liste das gleiche wie <code>void</code> in C.</li>
<li>Benutzung von char[]: siehe Nukularfüsiker.</li>
<li>this-Qualifizierung für Membervariablen ist unnötig.</li>
<li>Destruktoren und Konstruktoren: Warum schreibst du welche, wenn sie nicht machen?</li>
</ul>
<p>Und an der Sinnhaftigkeit der Verweistechnik zweifle ich hier ebenfalls, aber über Objektdesign können wir uns ein anderes Mal unterhalten. Wenn du obige und Nukularfüsikers Hinweise berücksichtigst, wird das deinen Codestil schon einmal viel besser sein und die Leute auch hören nicht gleich auf zu Lesen, wenn sie deinen Code sehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1946664</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1946664</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 31 Aug 2010 16:41:13 GMT</pubDate></item></channel></rss>