<?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[Array variabler länge von Objekten.]]></title><description><![CDATA[<p>Hi,<br />
ich bin neu hier und auf verzweifelter Suche nach Hilfe. Ich bin Game Engineering Student im 2. Semester und versuche sei ein Paar Tagen folgendes Problem zu lösen:</p>
<p>Ich versuche ein Spiel zu schreiben, in dem sich der Spieler am Anfang aussuchen kann, ob er ein Hase oder Igel sein möchte. Die Auswahl ändert im Prinzip die Regeln nach denen er sich auf dem Spielfeld bewegen darf. Das ganze funktioniert auch schon mit einem Hasen und einem Igel, jetzt soll ich das Programm so erweitern, dass sich beliebig viele Spieler aussuchen können ob sie Hase oder Igel sein möchten. Hase und Igel sind jeweils eine Klasse, die sich von der Basisklasse Spielfigur ableiten.<br />
Das Spiel verläuft in der Klasse Spiel (Die Klassen waren vorgegeben). Beim Start des Spiels, lese ich ein wie viele Spieler es geben soll. Mein Plan war es nun, über den Konstruktor des Spiels die Spielfiguren anzulegen. Gedacht hatte ich mir das ganze wie folgt:</p>
<pre><code>#include &quot;Hase.h&quot;
#include &quot;Igel.h&quot;
#include &lt;iostream&gt;
using namespace std;

class CSpiel
{
public:
	CSpiel(int iSpieler)
        {
           CSpielfigur *pSpielfigur = new CSpielfigur[iSpieler];
           // An dieser Stelle wollte ich nun per for-Schleife einen nach dem anderen Spieler fragen, ob er Hase oder Igel sein möchte
for (int i = 0; i &lt; (iSpieler); i++)
	{
		cout &lt;&lt; &quot;\nSpieler &quot; &lt;&lt; i + 1 &lt;&lt; &quot;: Hase oder Igel? [h/i] &quot;;
		char cEingabe;
		cin &gt;&gt; cEingabe;

		if (cEingabe == 'h')
		{
			CHase Hase;
			pSpielfigur[i] = Hase;
		}
		else
		{
			CIgel Igel;
			pSpielfigur[i] = Igel;
		}
	}
        }
	~CSpiel();
private:
	int m_iZiel;
	CSpielfigur *pSpielfiguren;
};
</code></pre>
<p>Leider funktioniert das ganze nicht so wie ich mir das gedacht hatte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> Hatte es auch schon einmal mit pSpielfigur[i] = new CHase Hase; probiert allerdings stimmt da wohl der Syntax nicht. Wäre nett, wenn mir jemand sagen könnte, wie man das ganze bewerkstelligen könnte. Achtung!: Ich bin wirklich noch Anfänger ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/337511/array-variabler-länge-von-objekten</link><generator>RSS for Node</generator><lastBuildDate>Fri, 17 Apr 2026 23:25:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/337511.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 07 Apr 2016 15:42:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array variabler länge von Objekten. on Thu, 07 Apr 2016 15:49:11 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich bin neu hier und auf verzweifelter Suche nach Hilfe. Ich bin Game Engineering Student im 2. Semester und versuche sei ein Paar Tagen folgendes Problem zu lösen:</p>
<p>Ich versuche ein Spiel zu schreiben, in dem sich der Spieler am Anfang aussuchen kann, ob er ein Hase oder Igel sein möchte. Die Auswahl ändert im Prinzip die Regeln nach denen er sich auf dem Spielfeld bewegen darf. Das ganze funktioniert auch schon mit einem Hasen und einem Igel, jetzt soll ich das Programm so erweitern, dass sich beliebig viele Spieler aussuchen können ob sie Hase oder Igel sein möchten. Hase und Igel sind jeweils eine Klasse, die sich von der Basisklasse Spielfigur ableiten.<br />
Das Spiel verläuft in der Klasse Spiel (Die Klassen waren vorgegeben). Beim Start des Spiels, lese ich ein wie viele Spieler es geben soll. Mein Plan war es nun, über den Konstruktor des Spiels die Spielfiguren anzulegen. Gedacht hatte ich mir das ganze wie folgt:</p>
<pre><code>#include &quot;Hase.h&quot;
#include &quot;Igel.h&quot;
#include &lt;iostream&gt;
using namespace std;

class CSpiel
{
public:
	CSpiel(int iSpieler)
        {
           CSpielfigur *pSpielfigur = new CSpielfigur[iSpieler];
           // An dieser Stelle wollte ich nun per for-Schleife einen nach dem anderen Spieler fragen, ob er Hase oder Igel sein möchte
for (int i = 0; i &lt; (iSpieler); i++)
	{
		cout &lt;&lt; &quot;\nSpieler &quot; &lt;&lt; i + 1 &lt;&lt; &quot;: Hase oder Igel? [h/i] &quot;;
		char cEingabe;
		cin &gt;&gt; cEingabe;

		if (cEingabe == 'h')
		{
			CHase Hase;
			pSpielfigur[i] = Hase;
		}
		else
		{
			CIgel Igel;
			pSpielfigur[i] = Igel;
		}
	}
        }
	~CSpiel();
private:
	int m_iZiel;
	CSpielfigur *pSpielfiguren;
};
</code></pre>
<p>Leider funktioniert das ganze nicht so wie ich mir das gedacht hatte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /> Hatte es auch schon einmal mit pSpielfigur[i] = new CHase Hase; probiert allerdings stimmt da wohl der Syntax nicht. Wäre nett, wenn mir jemand sagen könnte, wie man das ganze bewerkstelligen könnte. Achtung!: Ich bin wirklich noch Anfänger ^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492580</guid><dc:creator><![CDATA[TheCoCe]]></dc:creator><pubDate>Thu, 07 Apr 2016 15:49:11 GMT</pubDate></item><item><title><![CDATA[Reply to Array variabler länge von Objekten. on Thu, 07 Apr 2016 16:27:09 GMT]]></title><description><![CDATA[<p>&quot;Funktioniert nicht&quot; ist keine Fehlerbeschreibung.</p>
<p>new []? Verwende std::vector.</p>
<p>Du wirst wohl Zeiger auf die Spielfiguren verwenden müssen.</p>
<p>Wer bringt die diese unsägliche ungarische Notation bei? Was ist wohl sinnvoller: iSpieler oder anzahlSpieler?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492581</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492581</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 07 Apr 2016 16:27:09 GMT</pubDate></item><item><title><![CDATA[Reply to Array variabler länge von Objekten. on Thu, 07 Apr 2016 16:51:59 GMT]]></title><description><![CDATA[<p><div class="plugin-markdown"><input type="checkbox" id="checkbox26045" checked="true" /><label for="checkbox26045">zeigen soll.</label></div><br />
Zudem finde ich die polnische Datentypnotation für den Anfang doch sehr übersichtlich und verständlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492584</guid><dc:creator><![CDATA[TheCoCe]]></dc:creator><pubDate>Thu, 07 Apr 2016 16:51:59 GMT</pubDate></item><item><title><![CDATA[Reply to Array variabler länge von Objekten. on Thu, 07 Apr 2016 17:39:25 GMT]]></title><description><![CDATA[<p>So wirst Du nicht weit kommen. Du erzeugst ja jetzt schon</p>
<pre><code>CSpielfigur *pSpielfigur = new CSpielfigur[iSpieler];
</code></pre>
<p>eine Anzahl von Variablen des Typs CSpielfigur.</p>
<p>Was Du aber wahrscheinlich willst, ist eine Anzahl von Variablen, die letztendlich Igel oder Hase sein können.</p>
<p>Das funktioniert nur über Zeiger (oder Referenzen):<br />
Du brauchst eine Anzahl von Zeigern auf den Datentyp Spielfigur, die letztendlich auf alle Typen zeigen können, die von Spielfigur abgeleitet sind, also auf Hase oder Igel.</p>
<p>Etwa so (ungetestet):</p>
<pre><code>#include &quot;Hase.h&quot;
#include &quot;Igel.h&quot;
#include &lt;iostream&gt;
#include &lt;vector&gt;
using namespace std;

class CSpiel
{
public:
    CSpiel(int iSpieler)
        {

           // An dieser Stelle wollte ich nun per for-Schleife einen nach dem anderen Spieler fragen, ob er Hase oder Igel sein möchte
for (int i = 0; i &lt; (iSpieler); i++)
    {
        cout &lt;&lt; &quot;\nSpieler &quot; &lt;&lt; i + 1 &lt;&lt; &quot;: Hase oder Igel? [h/i] &quot;;
        char cEingabe;
        cin &gt;&gt; cEingabe;

        if (cEingabe == 'h')
        {
            CSpielfigur *tmp = new CHase();
            pSpielfiguren.push_back(tmp);
        }
        else
        {
            CSpielfigur *tmp = new CIgel();
            pSpielfiguren.push_back(tmp);
        }
    }
        }
    ~CSpiel()
    {
       for(int i = 0; i &lt; pSpielfiguren.size(); ++i)
          delete pSpielfiguren[i];
    }
private:
    int m_iZiel;
    vector&lt;CSpielfigur *&gt; pSpielfiguren;
};
</code></pre>
<p>Nun ist aber wichtig, dass die Spielfiguren im Destruktor wieder aufgeräumt werden, siehe oben - besser wäre es, Smart-Pointer zu verwenden, aber vllt. guckst Du Dir erst mal den Vektor an.</p>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox26046" checked="true" /><label for="checkbox26046">auf Deine Spielfiguren zugreifen, x muss natürlich ein gültiger Index sein (bzw. natürlich auf die Zeiger auf Deine Spielfiguren).</label></div></p>
<p>Ansonsten:<br />
Wenn Deine Klassen schon CIgel und CHase statt Igel und Hase heißen, sollten auch die Headerdateien CIgel.h und CHase.h heißen ...</p>
<p>Zu dem Rest des Designs sag ich mal nix.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492591</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 07 Apr 2016 17:39:25 GMT</pubDate></item><item><title><![CDATA[Reply to Array variabler länge von Objekten. on Thu, 07 Apr 2016 18:21:20 GMT]]></title><description><![CDATA[<p>Ok danke werde mal schauen was ich damit so zusammen bekomme und mich mal mit Vektor befassen. Die Header Datei benennt Visual Studio selber um (Erstelle die Klassen mit dem Assistenten).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492596</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492596</guid><dc:creator><![CDATA[TheCoCe]]></dc:creator><pubDate>Thu, 07 Apr 2016 18:21:20 GMT</pubDate></item><item><title><![CDATA[Reply to Array variabler länge von Objekten. on Thu, 07 Apr 2016 18:34:39 GMT]]></title><description><![CDATA[<p>Ok cool,</p>
<pre><code>CSpielfigur *tmp = new CHase();
pSpielfiguren.push_back(*tmp);
</code></pre>
<p>hat funktioniert. Hab mir mal ein paar Sachen zu Vektor besorgt und werde mir das ganze jetzt mal genauer anschauen. Danke nochmal! <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/2492600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492600</guid><dc:creator><![CDATA[TheCoCe]]></dc:creator><pubDate>Thu, 07 Apr 2016 18:34:39 GMT</pubDate></item><item><title><![CDATA[Reply to Array variabler länge von Objekten. on Thu, 07 Apr 2016 18:52:26 GMT]]></title><description><![CDATA[<p>TheCoCe schrieb:</p>
<blockquote>
<p>Ok cool,</p>
<pre><code>CSpielfigur *tmp = new CHase();
pSpielfiguren.push_back(*tmp);
</code></pre>
<p>hat funktioniert. Hab mir mal ein paar Sachen zu Vektor besorgt und werde mir das ganze jetzt mal genauer anschauen. Danke nochmal! <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>
</blockquote>
<p>Nein, so nicht. Der Vector muss Pointer aufnehmen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492602</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 07 Apr 2016 18:52:26 GMT</pubDate></item><item><title><![CDATA[Reply to Array variabler länge von Objekten. on Thu, 07 Apr 2016 19:06:31 GMT]]></title><description><![CDATA[<p>Mhh.. hab es jetzt so geändert:</p>
<pre><code>CSpielfigur *pTmp = new CHase();
pSpielfigur[i].push_back(pTmp);
</code></pre>
<p>ok so funktioniert das ganze aber jetzt nicht mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p>error C2664: 'void std::vector&lt;CSpielfigur,std::allocator&lt;_Ty&gt;&gt;::push_back(const CSpielfigur &amp;)' : Konvertierung von Argument 1 von 'CSpielfigur *' in 'CSpielfigur &amp;&amp;' nicht möglich</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492606</guid><dc:creator><![CDATA[TheCoCe]]></dc:creator><pubDate>Thu, 07 Apr 2016 19:06:31 GMT</pubDate></item><item><title><![CDATA[Reply to Array variabler länge von Objekten. on Thu, 07 Apr 2016 19:16:15 GMT]]></title><description><![CDATA[<p>Du musst doch nur noch bei Belli richtig abschreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492608</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 07 Apr 2016 19:16:15 GMT</pubDate></item><item><title><![CDATA[Reply to Array variabler länge von Objekten. on Thu, 07 Apr 2016 19:26:02 GMT]]></title><description><![CDATA[<p>Ah ok ups ^^ Hatte den Vektor falsch interpretiert (Deshalb das [i]). So ist das wenn man was benutzt, dass man noch nicht versteht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492611</guid><dc:creator><![CDATA[TheCoCe]]></dc:creator><pubDate>Thu, 07 Apr 2016 19:26:02 GMT</pubDate></item><item><title><![CDATA[Reply to Array variabler länge von Objekten. on Thu, 07 Apr 2016 20:02:42 GMT]]></title><description><![CDATA[<p>Und am Ende delete nicht vergessen oder gleich auf schlaue Zeiger wie unique_ptr setzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492613</guid><dc:creator><![CDATA[Techel]]></dc:creator><pubDate>Thu, 07 Apr 2016 20:02:42 GMT</pubDate></item><item><title><![CDATA[Reply to Array variabler länge von Objekten. on Thu, 07 Apr 2016 22:13:11 GMT]]></title><description><![CDATA[<p>roflo schrieb:</p>
<blockquote>
<p>Und am Ende delete nicht vergessen</p>
</blockquote>
<p>Steht oben im Destruktor, oder meinst Du noch was anderes?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2492618</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2492618</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 07 Apr 2016 22:13:11 GMT</pubDate></item></channel></rss>