<?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[2 Design Fragen]]></title><description><![CDATA[<p>Hallo,</p>
<p>hätte da mal zwei Design Fragen an euch, ne Antwort wäre nett! <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>
<ol>
<li></li>
</ol>
<p>Also ich code ein Spiel, habe verschiedene Headerdateien:</p>
<p>World.h<br />
JumpAndRun.h &lt;- die Haupt Header Datei, die alle anderen Header Dateien included</p>
<p>Nun include ich in World.h JumpAndRun.h weil in JumpAndRun.h alle wichtigen Definitionen und alle anderen Dateien schon included sind. In JumpAndRun include ich World.h weil die Klasse JumpAndRun eine Instanz von World enthält</p>
<p>So:</p>
<p>JumpAndRun.h:</p>
<pre><code class="language-cpp">#include &quot;Tile.h&quot; // Alles auch von World.h gebraucht
#include &quot;TileSky.h&quot;
#include &quot;TileGrass.h&quot;
#include &quot;World.h&quot;

class JumpAndRun
{
..
	World world;
..
};
</code></pre>
<p>World.h:</p>
<pre><code class="language-cpp">#include &quot;JumpAndRun.h&quot;
</code></pre>
<p>Natürlich alles mit include guards. Nun kriege ich aber komische Compile Fehler:</p>
<blockquote>
<p>1&gt;i:\programmierung\jump n run\jumpandrun.h(22): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'world'<br />
1&gt;i:\programmierung\jump n run\jumpandrun.h(22): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.<br />
1&gt;i:\programmierung\jump n run\jumpandrun.h(22): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.</p>
</blockquote>
<p>Kommt doch von header dateien die sich gegenseitig includen oder? Wie würdet ihr das machen?</p>
<ol start="2">
<li></li>
</ol>
<p>Die Welt besteht aus einzelnen &quot;tiles&quot;, das sind die Blöcke aus denen die Welt besteht, sind auch in einer Klasse gekapselt. Sind in nem Array in World:</p>
<pre><code class="language-cpp">Tile* Tiles[tileX][tileY];
</code></pre>
<p>Wenn diese Tiles jetzt aber Zugriff auf dieses Array brauchen, zum Beispiel um zu erfahren was eine Art Tile unter ihnen liegt, wie macht ihr das? Weil World is ja in der Klasse JumpAndRun definiert und JumpAndRun in main(), also soll ich Tile die World mitgeben, zu der sie gehören und dann mit get() und set() methoden kommunizieren oder soll ich die die Instanz von JumpAndRun global anlegen sodass alle anderen Klassen wenn sie was brauchen darüber Zugriff haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/287149/2-design-fragen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 15:25:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/287149.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 May 2011 19:18:00 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2 Design Fragen on Mon, 23 May 2011 19:18:00 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>hätte da mal zwei Design Fragen an euch, ne Antwort wäre nett! <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>
<ol>
<li></li>
</ol>
<p>Also ich code ein Spiel, habe verschiedene Headerdateien:</p>
<p>World.h<br />
JumpAndRun.h &lt;- die Haupt Header Datei, die alle anderen Header Dateien included</p>
<p>Nun include ich in World.h JumpAndRun.h weil in JumpAndRun.h alle wichtigen Definitionen und alle anderen Dateien schon included sind. In JumpAndRun include ich World.h weil die Klasse JumpAndRun eine Instanz von World enthält</p>
<p>So:</p>
<p>JumpAndRun.h:</p>
<pre><code class="language-cpp">#include &quot;Tile.h&quot; // Alles auch von World.h gebraucht
#include &quot;TileSky.h&quot;
#include &quot;TileGrass.h&quot;
#include &quot;World.h&quot;

class JumpAndRun
{
..
	World world;
..
};
</code></pre>
<p>World.h:</p>
<pre><code class="language-cpp">#include &quot;JumpAndRun.h&quot;
</code></pre>
<p>Natürlich alles mit include guards. Nun kriege ich aber komische Compile Fehler:</p>
<blockquote>
<p>1&gt;i:\programmierung\jump n run\jumpandrun.h(22): error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'world'<br />
1&gt;i:\programmierung\jump n run\jumpandrun.h(22): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.<br />
1&gt;i:\programmierung\jump n run\jumpandrun.h(22): error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.</p>
</blockquote>
<p>Kommt doch von header dateien die sich gegenseitig includen oder? Wie würdet ihr das machen?</p>
<ol start="2">
<li></li>
</ol>
<p>Die Welt besteht aus einzelnen &quot;tiles&quot;, das sind die Blöcke aus denen die Welt besteht, sind auch in einer Klasse gekapselt. Sind in nem Array in World:</p>
<pre><code class="language-cpp">Tile* Tiles[tileX][tileY];
</code></pre>
<p>Wenn diese Tiles jetzt aber Zugriff auf dieses Array brauchen, zum Beispiel um zu erfahren was eine Art Tile unter ihnen liegt, wie macht ihr das? Weil World is ja in der Klasse JumpAndRun definiert und JumpAndRun in main(), also soll ich Tile die World mitgeben, zu der sie gehören und dann mit get() und set() methoden kommunizieren oder soll ich die die Instanz von JumpAndRun global anlegen sodass alle anderen Klassen wenn sie was brauchen darüber Zugriff haben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2067599</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2067599</guid><dc:creator><![CDATA[Design]]></dc:creator><pubDate>Mon, 23 May 2011 19:18:00 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Design Fragen on Mon, 23 May 2011 19:32:53 GMT]]></title><description><![CDATA[<ol>
<li></li>
</ol>
<p>Dieses Design solltest du nochmal überdenken und nur die Header einbinden, die an der jeweiligen Stelle tatsächlich gebraucht werden - abgesehen davon, daß du dir solche Problem damit ersparst, reduzierst du damit die Abhängigkeiten zwischen den Modulen (d.h. du mußt nur die Klassen neu übersetzn, die von den Code-Änderungen auch betroffen sind.<br />
Für die Fälle, wo zwei Klassen sich gegenseitig kennen müssen, benötigst du auf einer der Seiten eine Forward-Deklaration.</p>
<p>zu Teil 2 kann ich jetzt nichts sagen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2067609</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2067609</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 23 May 2011 19:32:53 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Design Fragen on Mon, 23 May 2011 19:40:12 GMT]]></title><description><![CDATA[<p>Vielleicht kannst du dein Problem mit Vorwärtsdeklaration lösen. Wenn nicht, musst du deine Header umstrukturieren. Auf jeden Fall darf ein gegenseitiges Einbinden der beiden Header nicht vorkommen.</p>
<p><a href="http://www.c-plusplus.net/forum/p1993089#1993089" rel="nofollow">http://www.c-plusplus.net/forum/p1993089#1993089</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2067613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2067613</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Mon, 23 May 2011 19:40:12 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Design Fragen on Mon, 23 May 2011 19:44:59 GMT]]></title><description><![CDATA[<p>Ok das erste Problem habe ich mit forward Deklarationen in den Griff bekommen, einer ne Idee zum zweiten? <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>
<p>Und danke für den Tipp!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2067616</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2067616</guid><dc:creator><![CDATA[Design]]></dc:creator><pubDate>Mon, 23 May 2011 19:44:59 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Design Fragen on Mon, 23 May 2011 19:51:49 GMT]]></title><description><![CDATA[<p>Da gibt es verschiedene Möglichkeiten:</p>
<p>1. Design ändern -&gt; Die Funktionen, die mehrere Tiles brauchen, werden von World erledigt<br />
2. Array im Konstruktor mitgeben<br />
3. Array global zugänglich machen (nicht so gut)</p>
<p>Außerdem würde ich einen std::vector&lt;std::vector&lt;shared_ptr&lt;Tile&gt; &gt; &gt; oder so nehmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2067618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2067618</guid><dc:creator><![CDATA[wxSkip]]></dc:creator><pubDate>Mon, 23 May 2011 19:51:49 GMT</pubDate></item></channel></rss>