<?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[Vorwärtsreferenzen, oder wie man rekusive Klassenabhänigkeiten auflösen kann]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin gerade dabei mir ein bisschen C++ anzueignen. Ich bin jedoch kein neuling was das Programmieren angeht!</p>
<p>Zum Lernen schreibe ich momentan an einem kleinen Programm. In welchem ich versuche möglichst sauber und OO zu programmieren.</p>
<p>Ich bin jedoch auf ein Problem gestoßen, welches sich durch die strukturierung des OO-Codes ergibt.</p>
<p>Das Programm simuliert logische Schaltungen. Und man kann Bauteile und Verbindungen einfügen. Ich möchte auch mehrere Bauteile zu einem integrierten Bauteil zusammenfassen. Und da stoße ich auf das Problem.</p>
<p>Hier eine stark vereinfachte Klassendefinition, um das Problem zu verdeutlichen:</p>
<pre><code class="language-cpp">class class_gate
{
	private:
		int type;
		union
		{
			int IO_Pins; //Für kleine Bautiele wie AND, OR, XOR
			class_workspace *ic; //Pointer zur Datenstruktur eines Integrierten Schaltkreises (DAS IST MEIN PROBLEM)
		}
	public:
		void set_pos_x(int new_x);
		void logic();
}

class class_workspace
{
	private:
		class_gate *gate;
	public:
		void creat_new_gate(int x, int y, int type);
}
</code></pre>
<p>Ich habe also ersteinmal die Arbeitsfläche (class_workspace) in der ich Bauteile (class_gate) erstellen kann.<br />
Nun will ich aber in einem Bauteil eine weitere Arbeitsfläche zusammenfassen.</p>
<p>Ich sehe momentan nur 2 Lösungswege:</p>
<p>1. Ich lagere die Methoden der class_gate aus, und setzt sie unter class_workspace. Das ist jedoch ein Bruch im OO-Code.</p>
<p>2. Eventuell gibt es die möglichkeit einer Vorwärtsreferenzen. So das class_workspace schon im class_gate bekannt ist.</p>
<p>Ich würde Nr. 2 bevorzugen. Gibt es eventuell noch andere Lösungen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/194949/vorwärtsreferenzen-oder-wie-man-rekusive-klassenabhänigkeiten-auflösen-kann</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 17:03:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/194949.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 Oct 2007 10:04:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vorwärtsreferenzen, oder wie man rekusive Klassenabhänigkeiten auflösen kann on Fri, 12 Oct 2007 10:04:40 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin gerade dabei mir ein bisschen C++ anzueignen. Ich bin jedoch kein neuling was das Programmieren angeht!</p>
<p>Zum Lernen schreibe ich momentan an einem kleinen Programm. In welchem ich versuche möglichst sauber und OO zu programmieren.</p>
<p>Ich bin jedoch auf ein Problem gestoßen, welches sich durch die strukturierung des OO-Codes ergibt.</p>
<p>Das Programm simuliert logische Schaltungen. Und man kann Bauteile und Verbindungen einfügen. Ich möchte auch mehrere Bauteile zu einem integrierten Bauteil zusammenfassen. Und da stoße ich auf das Problem.</p>
<p>Hier eine stark vereinfachte Klassendefinition, um das Problem zu verdeutlichen:</p>
<pre><code class="language-cpp">class class_gate
{
	private:
		int type;
		union
		{
			int IO_Pins; //Für kleine Bautiele wie AND, OR, XOR
			class_workspace *ic; //Pointer zur Datenstruktur eines Integrierten Schaltkreises (DAS IST MEIN PROBLEM)
		}
	public:
		void set_pos_x(int new_x);
		void logic();
}

class class_workspace
{
	private:
		class_gate *gate;
	public:
		void creat_new_gate(int x, int y, int type);
}
</code></pre>
<p>Ich habe also ersteinmal die Arbeitsfläche (class_workspace) in der ich Bauteile (class_gate) erstellen kann.<br />
Nun will ich aber in einem Bauteil eine weitere Arbeitsfläche zusammenfassen.</p>
<p>Ich sehe momentan nur 2 Lösungswege:</p>
<p>1. Ich lagere die Methoden der class_gate aus, und setzt sie unter class_workspace. Das ist jedoch ein Bruch im OO-Code.</p>
<p>2. Eventuell gibt es die möglichkeit einer Vorwärtsreferenzen. So das class_workspace schon im class_gate bekannt ist.</p>
<p>Ich würde Nr. 2 bevorzugen. Gibt es eventuell noch andere Lösungen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1383566</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1383566</guid><dc:creator><![CDATA[Osbios]]></dc:creator><pubDate>Fri, 12 Oct 2007 10:04:40 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsreferenzen, oder wie man rekusive Klassenabhänigkeiten auflösen kann on Fri, 12 Oct 2007 10:10:14 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>2. Eventuell gibt es die möglichkeit einer Vorwärtsreferenzen. So das class_workspace schon im class_gate bekannt ist.</p>
</blockquote>
<p>So ähnlich. Das heißt Forward Declaration und sieht ganz einfach aus</p>
<pre><code class="language-cpp">class class_workspace; // Forward Declaration

class class_gate
{
...
};

class class_workspace
{
...
};
</code></pre>
<p>Die Semikolone nach den Klassendefinition darfst du aber so oder so nicht weglassen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1383570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1383570</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 12 Oct 2007 10:10:14 GMT</pubDate></item></channel></rss>