<?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[Klassen durch Array ansprechen]]></title><description><![CDATA[<p>Hallo,</p>
<p>wisst ihr wie ich z.B. die Klassen:</p>
<pre><code class="language-cpp">class spieler_1{
 public:
   int function();
};
class spieler_2{
 public:
   int function();
};
class spieler_3{
 public:
   int function();
};
class spieler_4{
 public: 
   int function();
}
</code></pre>
<p>durch ein Array ansprechen kann?</p>
<p>Hab mir das ungefähr so vorgestellt:</p>
<pre><code class="language-cpp">int main(){
   ...Klassen F[4];
   spieler_1 F[1];
   spieler_2 F[2];
   spieler_3 F[3];
   spieler_4 F[4];
</code></pre>
<p>mein Ziel ist es, die Klassen-Funktionen ungefähr so aufrufen zu können:</p>
<pre><code class="language-cpp">for( int i=0; i&lt;4; i++) {
      F[i].function();
      }
</code></pre>
<p>Habe schon viel &quot;rumexperimentiert&quot;, kriege es aber (auch mithilfe von google) nicht hin <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Falls mir jemand helfen könnte, würde ich mich freuen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/233191/klassen-durch-array-ansprechen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 02:17:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/233191.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 01 Feb 2009 23:09:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassen durch Array ansprechen on Sun, 01 Feb 2009 23:09:24 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wisst ihr wie ich z.B. die Klassen:</p>
<pre><code class="language-cpp">class spieler_1{
 public:
   int function();
};
class spieler_2{
 public:
   int function();
};
class spieler_3{
 public:
   int function();
};
class spieler_4{
 public: 
   int function();
}
</code></pre>
<p>durch ein Array ansprechen kann?</p>
<p>Hab mir das ungefähr so vorgestellt:</p>
<pre><code class="language-cpp">int main(){
   ...Klassen F[4];
   spieler_1 F[1];
   spieler_2 F[2];
   spieler_3 F[3];
   spieler_4 F[4];
</code></pre>
<p>mein Ziel ist es, die Klassen-Funktionen ungefähr so aufrufen zu können:</p>
<pre><code class="language-cpp">for( int i=0; i&lt;4; i++) {
      F[i].function();
      }
</code></pre>
<p>Habe schon viel &quot;rumexperimentiert&quot;, kriege es aber (auch mithilfe von google) nicht hin <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Falls mir jemand helfen könnte, würde ich mich freuen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656256</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656256</guid><dc:creator><![CDATA[tillt]]></dc:creator><pubDate>Sun, 01 Feb 2009 23:09:24 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen durch Array ansprechen on Sun, 01 Feb 2009 23:17:47 GMT]]></title><description><![CDATA[<p>Du hast einen falschen Ansatz. Ich sehe zwei Interpretationsmöglichkeiten:</p>
<p><strong>1.)</strong> Du willst 4 Spieler erstellen, die vom gleichen Typ sind. Dafür brauchst du <strong>eine</strong> Klasse und 4 Instanzen.</p>
<pre><code class="language-cpp">class Spieler
{

};

// ---
Spieler F[4];
</code></pre>
<p><strong>2.)</strong> Du benötigst tatsächlich 4 Klassen. Damit diese zueinander kompatibel sind, kannst du eine gemeinsame Basisklasse festlegen. Je nachdem brauchst du auch Polymorphie (wenn du die Klassen in einem Array speichern willst, oder genauer Zeiger auf deren Instanzen).</p>
<p>Das zweite Vorgehen lohnt sich wirklich nur, wenn die Spieler sich massgeblich in der Funktionalität unterscheiden. Falls nur mehrere Spieler vom gleichen Typ benötigt werden, ist 1.) besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656258</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656258</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 01 Feb 2009 23:17:47 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen durch Array ansprechen on Sun, 01 Feb 2009 23:33:25 GMT]]></title><description><![CDATA[<p>Hy, danke für deine Antwort</p>
<p>was ich konkret umsetzen will, ist, dass<br />
ich ein Spiel aufbaue, welches verschiedene Spielfiguren<br />
mit versch. Funktionen hat.</p>
<p>Um einen mögliche Zug zu überprüfen will ich nicht jede<br />
einzele Funktion einer Figuren Klasse aufrufen sonder<br />
in einer Schleife alle Figuren, die die selbe Basisklasse haben,<br />
aber unterschiedliche Funtionen, auzurufen.</p>
<p>anstatt</p>
<pre><code class="language-cpp">Figur_1.function(...)
Figur_2.function(...)
Figur_3.function(...)
</code></pre>
<p>möchte ich</p>
<p>Figur[i].function(...)</p>
<p>schreiben können</p>
<p>gruss tillt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656263</guid><dc:creator><![CDATA[tillt]]></dc:creator><pubDate>Sun, 01 Feb 2009 23:33:25 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen durch Array ansprechen on Mon, 02 Feb 2009 00:00:57 GMT]]></title><description><![CDATA[<p>Wie gesagt wäre das mit Polymorphie lösbar. Allerdings bin ich weiterhin kritisch gegen dein Vorgehen eingestellt: Existiert denn von jeder Spielfigur nur eine Instanz? Wenn es mehrere gäbe, lohnen sich Container. Dann kannst du die einzelnen Instanzen nämlich auch spezifisch ansprechen. Nur aus Bequemlichkeit oder Code-Ersparnis würde ich hier keine Schleife oder gemeinsame Typen machen.</p>
<p>Falls du nicht dieser Ansicht bist, kannst du dich beispielsweise <a href="http://tutorial.schornboeck.net/vererbung.htm" rel="nofollow">hier</a> über Vererbung und nachfolgend über virtuelle Methoden (sozusagen der Kern der dynamischen Polymorphie) erkundigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656269</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 02 Feb 2009 00:00:57 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen durch Array ansprechen on Mon, 02 Feb 2009 00:06:30 GMT]]></title><description><![CDATA[<p>Am besten poste ich mal den Code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

class Figur{
      public:
        int    Koordinaten[2],    wert,       state;	// [1]:x, [2]:y
        bool   color;
        string name;
        bool   init( int _Koordinaten[2], int _wert, bool _state, bool _color,  string _name);  //      Initalisierung
      };

class	Turm:	Figur{
      public:
		bool	Zug( int nummer,  int vonKoordinaten[2], int nachKoordinaten[2]);
};
class	Springer:	Figur{
	  public:
		bool	Zug( int nummer,  int vonKoordinaten[2], int nachKoordinaten[2]);
};
class	Laeufer:	Figur{
	public:
		bool	Zug( int nummer,  int vonKoordinaten[2], int nachKoordinaten[2]);
};
class	Koenig:	Figur{
public:
		bool	Zug( int nummer,  int vonKoordinaten[2], int nachKoordinaten[2]);
};		
class	Dame:	Figur{
public:
		bool	Zug( int nummer,  int vonKoordinaten[2], int nachKoordinaten[2]);
};
class	Bauer:	Figur{
public:
		bool	Zug( int nummer,  int vonKoordinaten[2], int nachKoordinaten[2]);
};

bool Turm::Zug( int nummer,  int vonKoordinaten[2], int nachKoordinaten[2])	{
  };
bool Springer::Zug( int nummer, int vonKoordinaten[2], int nachKoordinaten[2])	{
	return true;
  };
bool Laeufer::Zug( int nummer, int vonKoordinaten[2], int nachKoordinaten[2])	{
  return true;
  };
bool Koenig::Zug( int nummer, int vonKoordinaten[2], int nachKoordinaten[2])	{
  return true;
  };
bool Dame::Zug( int nummer, int vonKoordinaten[2], int nachKoordinaten[2])	{
  return true;
  };
bool Bauer::Zug( int nummer, int vonKoordinaten[2], int nachKoordinaten[2])	{
  return true;
  };

int	main()	{

	Turm	F[1];
	Springer F[2];
	....

	system(&quot;PAUSE&quot;);

	return	true;

	}
</code></pre>
<p>-&gt; Bin noch ein relativer newbie, tut mir leid, wenn meine Frage blöd ist.<br />
Die &quot;Figuren&quot; haben jeweils unterschiedliche Zugfunktionen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656270</guid><dc:creator><![CDATA[tillt]]></dc:creator><pubDate>Mon, 02 Feb 2009 00:06:30 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen durch Array ansprechen on Mon, 02 Feb 2009 00:42:30 GMT]]></title><description><![CDATA[<p>tillt schrieb:</p>
<blockquote>
<p>-&gt; Bin noch ein relativer newbie, tut mir leid, wenn meine Frage blöd ist.</p>
</blockquote>
<p>Mach dir deswegen keine Gedanken. Deine Frage ist durchaus berechtigt! <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>Grundsätzlich kann sich bei Klassen, deren relativ ähnlich sind, aber vom Verhalten her nicht ganz identisch, auch eine Fallunterscheidungs-Variable anbringen. Das zahlt sich besonders bei vielen einzelnen Fällen und kleinen Abweichungen aus. Dafür gibt es <code>enum</code> und per <code>switch</code> kann man leicht spezifisch handeln.</p>
<pre><code class="language-cpp">class MyClass
{
    public:
        enum Type
        {
            First,
            Second,
            Third,
        };

    private:
        Type MyType;
};
</code></pre>
<p>Aber bei dir mit den Schachfiguren könnte sich Vererbung auch lohnen. In der Basisklasse müsstest du eine (rein) virtuelle Methode bereitstellen, die in den abgeleiteten Klassen überschrieben wird.</p>
<pre><code class="language-cpp">class Figur
{
     public:
        virtual bool Zug(int nummer,  int vonKoordinaten[2], int nachKoordinaten[2]) = 0;
};
</code></pre>
<p>Diese virtuelle Methode implementierst du hier nicht (deshalb rein virtuell, das &quot;= 0&quot; bei der Deklaration), sondern erst in den abgeleiteten Klassen. In der <code>main()</code> -Funktion würde dann etwa Folgendes stehen:</p>
<pre><code class="language-cpp">int main()
{
    // Array aus Zeigern auf Basisklasse erstellen. X = Anzahl Figuren
    // Die Zeigern zeigen aber auf abgeleitete Klassen.
    Figur* Array[X] = {new Turm(..), new Turm(..), new Koenig(..), ...};

    // Die Königs-spezifische Zug-Memberfunktion aufrufen
    Array[2]-&gt;Zug(...);
}
</code></pre>
<p>Natürlich etwas sauberer und in besserem Kontext. Und an die <code>delete</code> s denken. Vielleicht seien hier auch noch gerade die STL-Container erwähnt, die sich viel komfortabler und sicherer als Arrays handhaben lassen. Schau dazu mal in den FAQ dieses Unterforums nach STL.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656276</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 02 Feb 2009 00:42:30 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen durch Array ansprechen on Mon, 02 Feb 2009 08:53:39 GMT]]></title><description><![CDATA[<p>Hy, ....war schon schlafen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Vielen Dank für deine Hilfe ich denke jetzt krige ich es hin! <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>
<p>...werd mir gleich mal die FAQ zur STL durchlesen</p>
<p>schönen Tag noch Till</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656352</guid><dc:creator><![CDATA[tillt]]></dc:creator><pubDate>Mon, 02 Feb 2009 08:53:39 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen durch Array ansprechen on Mon, 02 Feb 2009 12:29:55 GMT]]></title><description><![CDATA[<p>Ah sorry, ich hab dich falsch informiert. Die STL stehen nicht in den FAQ, sondern in den Artikeln. Dafür hab ich dir hier gleich die Links:</p>
<p><a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-143816.html" rel="nofollow"><strong>1)</strong> Container</a><br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-146604.html" rel="nofollow"><strong>2)</strong> Iteratoren und Algorithmen</a><br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-150106.html" rel="nofollow"><strong>3)</strong> Hilfsklassen und Erweiterungen</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656475</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656475</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 02 Feb 2009 12:29:55 GMT</pubDate></item><item><title><![CDATA[Reply to Klassen durch Array ansprechen on Mon, 02 Feb 2009 18:09:37 GMT]]></title><description><![CDATA[<p>...schon gefunden, aber danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1656745</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1656745</guid><dc:creator><![CDATA[tillt]]></dc:creator><pubDate>Mon, 02 Feb 2009 18:09:37 GMT</pubDate></item></channel></rss>