<?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[Klassendesign - Wie elegant Typ einer abgeleiteten Klasse bestimmen]]></title><description><![CDATA[<p>Hi zusammen</p>
<p>Ich programmiere im Moment den &quot;Logikteil&quot; eines Schachspiels für 2 Spieler (ohne KI), mein Aufbau sieht folgendermassen aus:</p>
<p>Eine Äussere Klasse &quot;Chess&quot;, welche das äusere Interface implementiert.<br />
Darin befindet sich eine Basisklasse &quot;Figure&quot; und davon abgeleitet die verschiedenen Figuren Bauer, König usw. usw.<br />
Die Board-Representation habe ich über ein 8x8-Array aus structs gelöst. Diese Structs enthalten jeweils einen int um anzuzeigen ob sich eine schwarze, weisse oder keine Figur darauf befindet, sowie einen Figure-Pointer, der entweder NULL ist (keine Figur drauf) oder auf ein Objekt der Klasse Bauer, Läufer... was auch immer, zeigt.</p>
<p>Nun hat jeder Figurtyp eine Methode bool move(field, x, y) die true zurück gibt, wenn der Zug gemacht werden konnte, d.h. zulässig ist. Wenn sich am Zielort nun aber z.B. der gegnerische König befindet, ist das Resultat naturgemäss ein anderes, als wenn dort ein Bauer steht... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Die Frage ist jetzt, wie ich rausfinden soll, was dort für eine Figur steht. RTTI ist ja anscheinend nicht gern gesehen. Ich könnte eine Methode whichType()implementieren, die zurückgibt, was für eine Figur es ist, oder ich könnte in der Board-Representation (also in meinem Array) zusätzlich noch den Typ der Figur festhalten....Was ist am besten/elegantesten?</p>
<p>Oder sollte ich mein gesamtes Design überarbeiten? Wenn ja wie? Für Vorschläge jeder Art wäre ich euch sehr verbunden...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/216188/klassendesign-wie-elegant-typ-einer-abgeleiteten-klasse-bestimmen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 11 Oct 2026 20:13:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/216188.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 20 Jun 2008 12:20:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassendesign - Wie elegant Typ einer abgeleiteten Klasse bestimmen on Fri, 20 Jun 2008 12:20:11 GMT]]></title><description><![CDATA[<p>Hi zusammen</p>
<p>Ich programmiere im Moment den &quot;Logikteil&quot; eines Schachspiels für 2 Spieler (ohne KI), mein Aufbau sieht folgendermassen aus:</p>
<p>Eine Äussere Klasse &quot;Chess&quot;, welche das äusere Interface implementiert.<br />
Darin befindet sich eine Basisklasse &quot;Figure&quot; und davon abgeleitet die verschiedenen Figuren Bauer, König usw. usw.<br />
Die Board-Representation habe ich über ein 8x8-Array aus structs gelöst. Diese Structs enthalten jeweils einen int um anzuzeigen ob sich eine schwarze, weisse oder keine Figur darauf befindet, sowie einen Figure-Pointer, der entweder NULL ist (keine Figur drauf) oder auf ein Objekt der Klasse Bauer, Läufer... was auch immer, zeigt.</p>
<p>Nun hat jeder Figurtyp eine Methode bool move(field, x, y) die true zurück gibt, wenn der Zug gemacht werden konnte, d.h. zulässig ist. Wenn sich am Zielort nun aber z.B. der gegnerische König befindet, ist das Resultat naturgemäss ein anderes, als wenn dort ein Bauer steht... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Die Frage ist jetzt, wie ich rausfinden soll, was dort für eine Figur steht. RTTI ist ja anscheinend nicht gern gesehen. Ich könnte eine Methode whichType()implementieren, die zurückgibt, was für eine Figur es ist, oder ich könnte in der Board-Representation (also in meinem Array) zusätzlich noch den Typ der Figur festhalten....Was ist am besten/elegantesten?</p>
<p>Oder sollte ich mein gesamtes Design überarbeiten? Wenn ja wie? Für Vorschläge jeder Art wäre ich euch sehr verbunden...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532810</guid><dc:creator><![CDATA[Dave_R]]></dc:creator><pubDate>Fri, 20 Jun 2008 12:20:11 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendesign - Wie elegant Typ einer abgeleiteten Klasse bestimmen on Fri, 20 Jun 2008 12:54:20 GMT]]></title><description><![CDATA[<p>implementiere doch für jede figur eine funktion die prüft, ob die figur geschlagen werden kann/sollte.</p>
<p>Dann rufst du die funktion von der figur des zielfeldes auf</p>
<p>dafür müssen alle fuguren in einem 2D array aus zeiger gespeichert werden</p>
<pre><code class="language-cpp">bool move(int x, int y)
{
    // .....
    chessfield[x][y]-&gt;check(dies, das, blub);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1532830</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532830</guid><dc:creator><![CDATA[bauer]]></dc:creator><pubDate>Fri, 20 Jun 2008 12:54:20 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendesign - Wie elegant Typ einer abgeleiteten Klasse bestimmen on Fri, 20 Jun 2008 12:57:00 GMT]]></title><description><![CDATA[<p>double dispatch (google)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532832</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532832</guid><dc:creator><![CDATA[dispatch]]></dc:creator><pubDate>Fri, 20 Jun 2008 12:57:00 GMT</pubDate></item><item><title><![CDATA[Reply to Klassendesign - Wie elegant Typ einer abgeleiteten Klasse bestimmen on Fri, 20 Jun 2008 13:12:09 GMT]]></title><description><![CDATA[<p>@dispatch:</p>
<p>Sieht gut aus, das ist wohl in etwa was ich suche...danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1532839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1532839</guid><dc:creator><![CDATA[Dave_R]]></dc:creator><pubDate>Fri, 20 Jun 2008 13:12:09 GMT</pubDate></item></channel></rss>