<?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[Auflistung von Instanzen]]></title><description><![CDATA[<p>In meiner Klasse &quot;Game&quot; möchte ich soetwas wie eine Auflistung führen.<br />
Es soll dynamisch ansprechbar sein, also wie ein Array.</p>
<p>Was würde sich da empfehlen?</p>
<p>Es geht mir nur darum, dass ich in meinen Spielefunktionen nicht</p>
<pre><code class="language-cpp">LightHealthPotion potion;
	player.inventory.addItem(potion);
</code></pre>
<p>sondern einfach</p>
<pre><code class="language-cpp">player.inventory.addItem(item[5]);
</code></pre>
<p>Die Schreibweise [5] ist dabei nicht wichtig, hauptsache aufgezählt.</p>
<p>//EDIT:<br />
Sorry, vergessen: In dem Array soll die Instanz einer Klasse gespeichert sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/138986/auflistung-von-instanzen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 08:30:54 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/138986.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Mar 2006 19:03:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Auflistung von Instanzen on Thu, 02 Mar 2006 19:07:34 GMT]]></title><description><![CDATA[<p>In meiner Klasse &quot;Game&quot; möchte ich soetwas wie eine Auflistung führen.<br />
Es soll dynamisch ansprechbar sein, also wie ein Array.</p>
<p>Was würde sich da empfehlen?</p>
<p>Es geht mir nur darum, dass ich in meinen Spielefunktionen nicht</p>
<pre><code class="language-cpp">LightHealthPotion potion;
	player.inventory.addItem(potion);
</code></pre>
<p>sondern einfach</p>
<pre><code class="language-cpp">player.inventory.addItem(item[5]);
</code></pre>
<p>Die Schreibweise [5] ist dabei nicht wichtig, hauptsache aufgezählt.</p>
<p>//EDIT:<br />
Sorry, vergessen: In dem Array soll die Instanz einer Klasse gespeichert sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007065</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007065</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Thu, 02 Mar 2006 19:07:34 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Thu, 02 Mar 2006 19:08:10 GMT]]></title><description><![CDATA[<p><a href="http://www.cppreference.com/cppvector/index.html" rel="nofollow">std::vector&lt;T&gt;</a> ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007074</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Thu, 02 Mar 2006 19:08:10 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Thu, 02 Mar 2006 19:09:14 GMT]]></title><description><![CDATA[<p>Wofür genau? So wie das aussieht möchtest du wohl eine <a href="http://de.wikipedia.org/wiki/Fabrikmuster" rel="nofollow">ObjectFactory</a> und damit die Items dynamisch anlegen. Sind deine Gegenstände von einer Basisklasse abgeleitet und wie sieht das inventory aus?</p>
<p>btw, öffentliche Membervariablen sind böse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007075</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Thu, 02 Mar 2006 19:09:14 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Thu, 02 Mar 2006 19:44:55 GMT]]></title><description><![CDATA[<p>Ja, aber wenn ich die Instanz der zu kontrollierenden Klasse in private stecke, muss ich die Funktionen doppelt schreiben, da sie sonst nicht verfügbar sind.</p>
<p>Also die Klasse Game kontrolliert die Klasse Player, diese wiederrum kontrolliert die Klasse Inventory und diese dann letztendlich Slot/Item-Klassen.</p>
<p>Ich muss ja jetzt irgendwo eine Instanz aller Items anlegen, damit ich mit</p>
<p>game.player.inventory.addItem()</p>
<p>arbeiten kann.</p>
<p>Codeausschnitte:</p>
<p>Items.h</p>
<pre><code class="language-cpp">#ifndef _ITEMS_H_
#define _ITEMS_H_

//***INCLUDES***//
#include &lt;string&gt;

class Game;

//***CLASS Slot***//
class Slot
{
public:
	Slot();

	virtual bool use() = 0;
	virtual bool isFull() = 0;
	virtual std::string getName() = 0;
};
//***CLASS Empty***//
class Empty : public Slot
{
public:
	Empty();

	bool use();
	bool isFull();
	std::string getName();
private:
	std::string name;
};

//***ITEM CLASSES***//
class LightHealthPotion : public Slot
{
public:
	LightHealthPotion();

	bool use();
	bool isFull();
	std::string getName();
private:
	std::string name;
};

#endif _ITEMS_H_
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1007087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007087</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Thu, 02 Mar 2006 19:44:55 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Thu, 02 Mar 2006 19:50:09 GMT]]></title><description><![CDATA[<p>Noch ein Nachtrag:</p>
<p>Inventory.h</p>
<pre><code class="language-cpp">class Inventory
{
public:
	Inventory();

	bool addItem(Slot&amp;);
	bool useItem(short);
	bool trashItem(short);

	Slot** ptrSlot;
	Empty* ptrEmptySlot;
};
</code></pre>
<p>Inventory.cpp</p>
<pre><code class="language-cpp">Inventory::Inventory()
{
	ptrEmptySlot = new Empty;

	ptrSlot = new Slot*[(game.player.getSlots()+1)];
	ptrSlot[0] = ptrEmptySlot;
	ptrSlot[1] = ptrEmptySlot;
	ptrSlot[2] = ptrEmptySlot;
	ptrSlot[3] = ptrEmptySlot;
	ptrSlot[4] = ptrEmptySlot;
}
bool Inventory::addItem(Slot &amp;item)
{
	for(int c = 0; c &lt; (game.player.getSlots()+1) ; c++)
	{
		if(ptrSlot[c]-&gt;isFull())
			continue;
		else
		{
			ptrSlot[c] = &amp;item;
			return true;
		}
	}

	return false;
}
bool Inventory::trashItem(short slot)
{
	if(ptrSlot[slot]-&gt;isFull())
	{
		ptrSlot[slot] = ptrEmptySlot;
		return true;
	}
	else
		return false;
}
bool Inventory::useItem(short slot)
{
	if(ptrSlot[slot]-&gt;use())
	{
		ptrSlot[slot] = ptrEmptySlot;
		return true;
	}
	else
		return false;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1007089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007089</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Thu, 02 Mar 2006 19:50:09 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Thu, 02 Mar 2006 20:23:59 GMT]]></title><description><![CDATA[<p>Hmm, eigentlich sind Items aber keine Slots (und das impliziert eine öffentliche Vererbung)!</p>
<pre><code class="language-cpp">class Item
{
// ...
    virtual void use () = 0;
};

class Slot
{
public:
    Slot (std::auto_ptr&lt;Item&gt; p) : _item (p) {}
    Slot () : _item (0) {}
    void use ()
    {
        if (_item != 0)
            _item-&gt;use ();
    }
    // ... Zuweisungen, set- und get-Methoden
private:
    std::auto_ptr&lt;Item&gt; _item;
};
</code></pre>
<p>Inventory wäre dann einfach ein Vektor von Slots.</p>
<blockquote>
<p>Ja, aber wenn ich die Instanz der zu kontrollierenden Klasse in private stecke, muss ich die Funktionen doppelt schreiben, da sie sonst nicht verfügbar sind.</p>
</blockquote>
<p><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=":confused:"
      alt="😕"
    /> Hmm, eigentlich nicht. So ist das Design auf jeden Fall sehr starr.<br />
Ist es denn schlimm</p>
<pre><code class="language-cpp">game.getPlayer (&quot;asdf&quot;).getInventory ().addItem ()
</code></pre>
<p>zu schreiben? So würdest du dir mehr Möglichkeiten für Änderungen offen halten (und du kannst Threadsafe programmieren).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007096</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007096</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Thu, 02 Mar 2006 20:23:59 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Thu, 02 Mar 2006 20:03:14 GMT]]></title><description><![CDATA[<p>Also da kenn ich mich gar nicht mehr aus.</p>
<p>Warum funktioniert das eigentlich nicht:</p>
<pre><code class="language-cpp">for(int c = 0; c &lt; (game.player.getSlots()+1); c++)
		ptrSlot[c] = ptrEmptySlot;
</code></pre>
<p>und zwar anstatt:</p>
<pre><code class="language-cpp">ptrSlot[0] = ptrEmptySlot;
    ptrSlot[1] = ptrEmptySlot;
    ptrSlot[2] = ptrEmptySlot;
    ptrSlot[3] = ptrEmptySlot;
    ptrSlot[4] = ptrEmptySlot;
</code></pre>
<p>game.player.getSlots() gibt 4 zurück.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007100</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007100</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Thu, 02 Mar 2006 20:03:14 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Thu, 02 Mar 2006 20:24:49 GMT]]></title><description><![CDATA[<p>Was heißt &quot;geht nicht&quot;?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007130</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Thu, 02 Mar 2006 20:24:49 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Thu, 02 Mar 2006 20:28:40 GMT]]></title><description><![CDATA[<p>Kritischer Abbruch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007134</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Thu, 02 Mar 2006 20:28:40 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Thu, 02 Mar 2006 20:31:16 GMT]]></title><description><![CDATA[<p>1. Slot: Leer steht da noch, anstatt alle 5 durchzugehen.</p>
<p>...hat ein Problem festgestellt und muss beendet werden.<br />
Offset: 0000259b</p>
<p>Aber ohne der Schleife passt alles.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007137</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Thu, 02 Mar 2006 20:31:16 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Thu, 02 Mar 2006 20:47:03 GMT]]></title><description><![CDATA[<p>Suspekt, aber mit &quot;meiner&quot; Variante leicht zu vermeiden ;).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007141</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Thu, 02 Mar 2006 20:47:03 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Fri, 03 Mar 2006 12:55:47 GMT]]></title><description><![CDATA[<p>Ich möchte keinen neuen Thread anfangen, habe hier noch eine Frage.<br />
Habe ich es so richtig gemacht?</p>
<p>(Öffentliche Membervariablen vermeide ich jetzt total!)</p>
<pre><code class="language-cpp">//In der .h
class Game
{
public:
	Game();
	void init();
	Player getPlayer();
private:
	Player player;
}; extern Game game;

//In der .cpp
Player Game::getPlayer()
{
	return player;
}
</code></pre>
<p>Und noch was:<br />
Ich dachte, extern bedeutet, man kann eine Variable von einer .cpp in die andere &quot;kopieren&quot;.<br />
In meiner Header steht das extern aber auch, und somit habe ich von überall Zugriff (NUR meine Game-Klasse).</p>
<p>Kann mir jemand &quot;extern&quot; genauer erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007608</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Fri, 03 Mar 2006 12:55:47 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Fri, 03 Mar 2006 13:01:15 GMT]]></title><description><![CDATA[<p>Auch wenn ich den Rückgabetyp von getPlayer als &quot;const Player&amp;&quot; efinieren würde, sieht das ganz gut aus.</p>
<blockquote>
<p>Kann mir jemand &quot;extern&quot; genauer erklären?</p>
</blockquote>
<p>&quot;extern&quot; erklärt dem Compiler, daß es zwar eine Variable des angegebenen Typs gibt - aber nicht hier. Das heißt, der Compiler stellt in der aktuellen Übersetzungseinheit keinen Speicher für diese Variable bereit, sondern hinterlässt nur eine Notiz &quot;hier benötige ist ein &quot;Game&quot; Objekt mit dem Namen &quot;game&quot;&quot; - der Linker geht dann später alle Libraries durch und findet dort (hoffentlich) diese Variable.<br />
(das entspricht dem reinen Prototypen bei einer Funktion)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007617</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 03 Mar 2006 13:01:15 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Fri, 03 Mar 2006 13:09:57 GMT]]></title><description><![CDATA[<p>Wobei noch zu erwähnen ist, daß globale Variablen böse sind <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="😉"
    /> Also, laß lieber die Finger davon!</p>
<p>Falls du den Spieler von Außerhalb der Game-Klasse manipulieren willst, sollte der Rückgabetyp übrigens &quot;Player&amp;&quot; lauten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007623</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007623</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Fri, 03 Mar 2006 13:09:57 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Fri, 03 Mar 2006 13:21:16 GMT]]></title><description><![CDATA[<p>Nur die Game-Klasse soll auf die Player-Klasse zugreifen können.<br />
So, zunächst ist es wichtig, dass getPlayer() immer dieselbe Instanz zurückgibt!<br />
Also player soll immer player sein, und nicht plötzlich eine neue Instanz!<br />
Das ist doch solange der Fall, solange die Game-Klasse existiert, oder?<br />
(Weil ja in der Game-Klasse Player player; steht)<br />
Oder habe ich da was falsch verstanden?</p>
<p>Nun zum extern.<br />
Bei mir steht im HEADER ein extern. Aber im Header brauche ich die Instanz gar nicht.</p>
<p>1. Möglichkeit:<br />
Game.h mit extern Game game;<br />
Game.cpp mit globalem Game game;<br />
Und dann kann ich von überall auf game zugreifen, was ich auch möchte.</p>
<p>2. Möglichkeit:<br />
Game.h ohne extern Game game;<br />
Game.cpp mit globalem Game game;<br />
Und dann zB. in der main.cpp ein extern Game game;</p>
<p>Beide Möglichkeiten scheinen mir gleich, wo ist jedoch der Unterschied/Vorteil/Nachteil usw..</p>
<p>MfG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007637</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007637</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Fri, 03 Mar 2006 13:21:16 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Fri, 03 Mar 2006 13:26:15 GMT]]></title><description><![CDATA[<p>Beide Möglichkeiten sind schlecht, weil sie wie gesagt globale Variablen verwenden. Das deutet meist auf einen Design-Fehler hin.</p>
<p>Was die dieselbe Instanz von Player betrifft, mußt du darauf achten, daß du von getPlayer keine Kopie, sondern eine Referenz zurückgeben läßt (bei der Kopie würdest du halt jedesmal einen neuen Player bekommen). Darum war deine ursprüngliche getPlayer Funktioni vermutlich nicht das, was du haben willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007641</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007641</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Fri, 03 Mar 2006 13:26:15 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Fri, 03 Mar 2006 13:40:09 GMT]]></title><description><![CDATA[<p>Danke, kannst du mir getPlayer() entsprechend umschreiben?</p>
<p>Ich bin gerade erst beim Kapitel Referenzen und Zeiger angekommen, habe mir noch nichts angeschaut.</p>
<p>So, also ich soll keine global definierte Instanzen verwenden?<br />
Das heißt, ich lasse extern Game game; weg, und erstelle nur dort eine Instanz, wo ich sie benötige? (zB. in der main() Funktion)</p>
<p>Bin für weitere Tipps dankbar <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1007654</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007654</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Fri, 03 Mar 2006 13:40:09 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Fri, 03 Mar 2006 13:44:48 GMT]]></title><description><![CDATA[<p>ceplusplus schrieb:</p>
<blockquote>
<p>Danke, kannst du mir getPlayer() entsprechend umschreiben?</p>
</blockquote>
<p>Ganz einfach - du mußt nur den Rückgabetyp der Methode von &quot;Player&quot; auf &quot;Player&amp;&quot; (wenn der Aufrufende das Objekt ändern darf) bzw. &quot;const Player&amp;&quot; (wenn er das Objekt nicht ändern darf) verändern.</p>
<blockquote>
<p>So, also ich soll keine global definierte Instanzen verwenden?<br />
Das heißt, ich lasse extern Game game; weg, und erstelle nur dort eine Instanz, wo ich sie benötige? (zB. in der main() Funktion)</p>
</blockquote>
<p>Ja - allerdings hat dann jede Instanz von Game ihr eigenes Player-Objekt.</p>
<p>(btw, eventuell könntest du auch mal nach &quot;Singleton&quot; googlen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007655</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 03 Mar 2006 13:44:48 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Fri, 03 Mar 2006 13:50:43 GMT]]></title><description><![CDATA[<p>Die Funktion muß heißen:</p>
<pre><code class="language-cpp">Player&amp; getPlayer()
</code></pre>
<p>Die Implementierung kann so bleiben, d.h.:</p>
<pre><code class="language-cpp">Player&amp; Game::getPlayer()
{
    return player;
}
</code></pre>
<p>Zur Game-Klasse: Ja, du kannst zum Beispiel eine Instanz in der main Funktion anlegen. Das könnte zum Beispiel so aussehen:</p>
<pre><code class="language-cpp">int main()
{
    Game theGame;
    theGame.play();
}
</code></pre>
<p>Wesentlich mehr sollte in der main-Funktion ohnehin nicht drin stehen.</p>
<p>Dein ganzes Spiel kommt dann in Game::play hinein (beziehungsweise in davon aufgerufene Funktionen). Und da du in Game::play direkten Zugriff auf alles hast, was zu Game gehört (z.B. player), kannst du dir die getPlayer-Funktion dann gleich komplett sparen (ist nur ein Vorschlag, da gibt es sicher mehr als einen Weg das vernünftig zu designen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007665</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Fri, 03 Mar 2006 13:50:43 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Fri, 03 Mar 2006 14:27:54 GMT]]></title><description><![CDATA[<p>Okay danke für die vielen Antworten und Hilfen!</p>
<p>(Singletons schaue ich mir lieber erst an, wenn ich mit meinem Buch fertig bin)</p>
<p>//EDIT:<br />
Eins noch:<br />
getPlayer() Kann ich ja nicht weglassen, wie soll ich sonst zugreifen?</p>
<p>Zum Beispiel:</p>
<p>game.player.getName();</p>
<p>Geht dann nicht:</p>
<p>error C2248: &quot;player&quot; : Kein Zugriff auf private Element, dessen Deklaration in der Klasse &quot;Game&quot; erfolgte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007693</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007693</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Fri, 03 Mar 2006 14:27:54 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Fri, 03 Mar 2006 14:40:27 GMT]]></title><description><![CDATA[<p>Wenn du player.getName() von einer Funktion aus aufrufst, die eine Methode von Game ist, geht das sehr wohl.</p>
<p>Wenn du player.getName() von einer Funktion A aus aufrufst, die keine Methode von Game ist, sollte A zumindestens von einer Funktion aus aufgerufen werden, die eine Methode von Game ist (ich hoffe ich mache das jetzt nicht zu kompliziert für dich). In dem Fall kannst du beim Aufruf von A einfach eine Refenrenz auf Player übergeben.</p>
<p>Singleton hätte ich dir wohlmöglich auch vorgeschlagen, aber ich hatte noch deine anderen Posts im Hinterkopf, und das sieht mir zumindest auf den ersten Blick so aus als könntest du soweit erst mal ohne das Singleton Pattern auskommen (kann natürlich auch sein, daß ich mich da irre; hab ja schließlich nur Ausschnitte deines Entwurfs gesehen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007711</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Fri, 03 Mar 2006 14:40:27 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Fri, 03 Mar 2006 14:43:28 GMT]]></title><description><![CDATA[<p>Das Problem dabei ist nur:</p>
<p>Wenn die Klasse &quot;Player&quot; mehr als 20 Methoden hat, dann müsste ich in die Klasse &quot;Game&quot; auch alle diese Methoden schreiben. Das würde ich mir gerne ersparen und es macht den Code vermutlich auch nicht besser...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007715</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Fri, 03 Mar 2006 14:43:28 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Fri, 03 Mar 2006 14:56:42 GMT]]></title><description><![CDATA[<p>Hm, offenbar habe ich mich doch zu kompliziert ausgedrückt. Natürlich mußt du die Methoden von Player nicht nach Game kopieren.</p>
<p>Ich versuch mal mir ein Beispiel für eine Game-Klasse aus den Fingern zu saugen (Code ungetestet).</p>
<pre><code class="language-cpp">// Game.h

#include &quot;Player.h&quot;

class Game
{
    Player d_player;
    bool d_running;

    void createPlayer();

    char getCommand();
    void executeCommand (char c);

  public:

    Game();

    void play();
};
</code></pre>
<pre><code class="language-cpp">// Game.cpp

void Game::createPlayer()
{
    // Namen einlesen, usw.
}

char Game::getCommand()
{
    // Optionen ausgeben und von cin einen Befehl einlesen
}

void Game::executeCommand (char c)
{
    // Befehl ausführen
    // an dieser Stelle kann zum Beispiel soetwas stehen wie
    d_player.getName();
}

Game::Game()
{
    // verschiedenes Zeugs
}

Game::play()
{
    createPlayer();

    while (d_running)
    {
        char c = getCommand();
        executeCommand (c);
    }
}
</code></pre>
<p>Edit: Rechtschreibung<br />
Edit: Noch mal Rechtschreibung, bah!<br />
Edit: Groß- und Kleinschreibung! Hilfe! <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1007730</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007730</guid><dc:creator><![CDATA[Z2]]></dc:creator><pubDate>Fri, 03 Mar 2006 14:56:42 GMT</pubDate></item><item><title><![CDATA[Reply to Auflistung von Instanzen on Fri, 03 Mar 2006 16:26:36 GMT]]></title><description><![CDATA[<p>Ich muss mich näher mit Klassen beschäftigen...</p>
<p>Jedenfalls ist es mir im Moment lieber, game.getPlayer(). zu verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1007829</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1007829</guid><dc:creator><![CDATA[ceplusplus]]></dc:creator><pubDate>Fri, 03 Mar 2006 16:26:36 GMT</pubDate></item></channel></rss>