<?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[Informationsaustausch zwischen verschiedenen Klassen]]></title><description><![CDATA[<p>Hallo,<br />
ich arbeite gerade daran, in ein existierendes Tower-Defence-Spiel ein Zeit und Resourcensystem einzubauen (Hausarbeit für die Uni). Dabei stoße ich auf ein sehr grundlegendes Problem. Vielleicht reicht ja der richtige Begriff, damit ich etwas googeln kann, das mir weiterhilft.</p>
<p>Mein Problem ist, dass ich aus der Klasse Turm auf die Klasse Punkte zugreifen muss.</p>
<p>Skizze:</p>
<pre><code>Welt
      /    \
   Turm    Punkte
   /  \    / \
shot() E  F   addPunkte()
</code></pre>
<p>Welt.Turm.shot() soll Welt.Punkte.addPunkte() aufrufen. Gibt es eine Möglichkeit, dass ohne eine vermittelnde Klasse hinzubekommen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297891/informationsaustausch-zwischen-verschiedenen-klassen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 06:39:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297891.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 09 Jan 2012 11:21:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Informationsaustausch zwischen verschiedenen Klassen on Mon, 09 Jan 2012 11:21:13 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich arbeite gerade daran, in ein existierendes Tower-Defence-Spiel ein Zeit und Resourcensystem einzubauen (Hausarbeit für die Uni). Dabei stoße ich auf ein sehr grundlegendes Problem. Vielleicht reicht ja der richtige Begriff, damit ich etwas googeln kann, das mir weiterhilft.</p>
<p>Mein Problem ist, dass ich aus der Klasse Turm auf die Klasse Punkte zugreifen muss.</p>
<p>Skizze:</p>
<pre><code>Welt
      /    \
   Turm    Punkte
   /  \    / \
shot() E  F   addPunkte()
</code></pre>
<p>Welt.Turm.shot() soll Welt.Punkte.addPunkte() aufrufen. Gibt es eine Möglichkeit, dass ohne eine vermittelnde Klasse hinzubekommen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165690</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165690</guid><dc:creator><![CDATA[kauflummi]]></dc:creator><pubDate>Mon, 09 Jan 2012 11:21:13 GMT</pubDate></item><item><title><![CDATA[Reply to Informationsaustausch zwischen verschiedenen Klassen on Mon, 09 Jan 2012 11:26:26 GMT]]></title><description><![CDATA[<p>Da Welt sowohl Turm als auch Punkte kennt, würde ich Welt als Mittler benutzen...<br />
Aber für Genaueres hast Du zu wenig Informationen geliefert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165695</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Mon, 09 Jan 2012 11:26:26 GMT</pubDate></item><item><title><![CDATA[Reply to Informationsaustausch zwischen verschiedenen Klassen on Mon, 09 Jan 2012 11:30:15 GMT]]></title><description><![CDATA[<p>Mit der Skizze kann ich nichts anfangen.</p>
<p>kauflummi schrieb:</p>
<blockquote>
<p>Mein Problem ist, dass ich aus der Klasse Turm auf die Klasse Punkte zugreifen muss.</p>
</blockquote>
<p>punkte.hpp</p>
<pre><code class="language-cpp">#ifndef DEINPROJEKT_PUNKTE_HPP_INCLUDED
#define DEINPROJEKT_PUNKTE_HPP_INCLUDED

class punkte {...};

#endif
</code></pre>
<p>turm.hpp</p>
<pre><code class="language-cpp">#ifndef DEINPROJEKT_TURM_HPP_INCLUDED
#define DEINPROJEKT_TURM_HPP_INCLUDED

#include &quot;punkte.hpp&quot;

class turm {...};

#endif
</code></pre>
<p>?</p>
<p>edit: Ah, womöglich hast Du fälschlicherweise das Wort &quot;Klasse&quot; statt &quot;Objekt&quot; verwendet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165696</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165696</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 09 Jan 2012 11:30:15 GMT</pubDate></item><item><title><![CDATA[Reply to Informationsaustausch zwischen verschiedenen Klassen on Mon, 09 Jan 2012 11:29:12 GMT]]></title><description><![CDATA[<p>kauflummi schrieb:</p>
<blockquote>
<p>Mein Problem ist, dass ich aus der Klasse Turm auf die Klasse Punkte zugreifen muss.</p>
</blockquote>
<p>Wieso?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165698</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165698</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 09 Jan 2012 11:29:12 GMT</pubDate></item><item><title><![CDATA[Reply to Informationsaustausch zwischen verschiedenen Klassen on Mon, 09 Jan 2012 11:46:06 GMT]]></title><description><![CDATA[<p>Gut Möglich dass ich da Begriffe unsauber verwende. Ich stochere gerade im Nebel nach einem Punkt, von dem aus ich lernen kann, was genau das Problem ist.</p>
<p>Im Gameloop durchläufen die Türme eine Liste der Gegner, sobald ein Gegner in Reichweite ist, wird geschossen. Dieses Ereignis will ich um eine Erhöhung der Punkte erweitern. Ich hatte mir das ganz simpel vorgestellt:</p>
<p>app.world.gamescore.addScore(100);</p>
<p>Allerdings bekomme ich folgende Fehler:</p>
<p>error C2065: 'app': nichtdeklarierter Bezeichner<br />
error C2228: Links von &quot;.world&quot; muss sich eine Klasse/Struktur/Union befinden.<br />
ebenso für gamescore und addScore</p>
<p>Haben die Member keinen Zugriff auf die öffentlichen Member / Funktionen der Objekte, in denen sie enthalten sind?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165705</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165705</guid><dc:creator><![CDATA[kauflummi]]></dc:creator><pubDate>Mon, 09 Jan 2012 11:46:06 GMT</pubDate></item><item><title><![CDATA[Reply to Informationsaustausch zwischen verschiedenen Klassen on Mon, 09 Jan 2012 11:47:14 GMT]]></title><description><![CDATA[<p>Schonmal Danke für Eure Antworten!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165707</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165707</guid><dc:creator><![CDATA[kauflummi]]></dc:creator><pubDate>Mon, 09 Jan 2012 11:47:14 GMT</pubDate></item><item><title><![CDATA[Reply to Informationsaustausch zwischen verschiedenen Klassen on Mon, 09 Jan 2012 11:52:45 GMT]]></title><description><![CDATA[<p>kauflummi schrieb:</p>
<blockquote>
<p>app.world.gamescore.addScore(100);<br />
...<br />
Haben die Member keinen Zugriff auf die öffentlichen Member / Funktionen der Objekte, in denen sie enthalten sind?</p>
</blockquote>
<p>Ich versteh nicht was du meinst. Auf als public deklarierte Eigenschaften zuzugreifen (nein, diese überhaupt public zu deklarieren) ist ziemlich gegen OOP-Denkweisen.<br />
Lieber Getter oder so.<br />
Weißt du, ich würde mich echt totlachen wenn du app nicht deklariert hast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165711</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 09 Jan 2012 11:52:45 GMT</pubDate></item><item><title><![CDATA[Reply to Informationsaustausch zwischen verschiedenen Klassen on Mon, 09 Jan 2012 12:02:22 GMT]]></title><description><![CDATA[<p>Mein Vorschlag: Redesign.</p>
<blockquote>
<p>Welt.Turm.shot() soll Welt.Punkte.addPunkte() aufrufen.</p>
</blockquote>
<p>So ne Konstruktion kann in gewissen Fällen Sinn machen, bei dir seh ich das aber nicht so.</p>
<p>Gibt verschiedene Ansätze: Punkte global machen (schlechte Idee), Punkte zum singleton machen (im Grunde dasselbe wie global in dem Fall, auch schlechte Idee), Punkte per dependeny injection weitergeben (also Turm bekommt eine Referenz auf Punkte - halt ich aber in dem Fall auch nicht für sinnvoll)</p>
<p>Was ich machen würde:<br />
Prinzipiell interessiert sich ein Turm nicht für Punkte. Das das Schießen eines Turms Punkte gibt, ist das ERGEBNIS davon. Meine Antwort wäre folgendes.<br />
Turm.shot() gibt als Ergebnis die Änderung der Punktzahl zurück.</p>
<pre><code class="language-cpp">int additionalPoints = turm.shot();
punkte.AddScore(additionalPoints);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2165716</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165716</guid><dc:creator><![CDATA[kleiner Troll]]></dc:creator><pubDate>Mon, 09 Jan 2012 12:02:22 GMT</pubDate></item><item><title><![CDATA[Reply to Informationsaustausch zwischen verschiedenen Klassen on Mon, 09 Jan 2012 12:16:15 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">/*...*/
class See
{
	std::vector&lt;Entchen&gt; allemeineentchen_;
	std::vector&lt;Gaenschen&gt; allemeinegaenschen_;
	friend class Entchen;
	/*...*/
};

class Entchen
{
	std::vector&lt;Kueken&gt; allemeinekueken_;
	See &amp; meinSee_;
	attacke();
public:
	Entchen(See &amp; see) : meinSee_(see){};
	/*...*/
};

Entchen::attacke()
{
	meinSee_.allemeinegaenschen_[xyz].federzupfen(/**/);
	//...
}

/*
Nun mußt Du den Entchen beim konstruieren nur den See mitgeben
*/
</code></pre>
<p>Edit: friend</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165718</guid><dc:creator><![CDATA[Caligulaminus]]></dc:creator><pubDate>Mon, 09 Jan 2012 12:16:15 GMT</pubDate></item><item><title><![CDATA[Reply to Informationsaustausch zwischen verschiedenen Klassen on Mon, 09 Jan 2012 12:23:23 GMT]]></title><description><![CDATA[<p>kauflummi schrieb:</p>
<blockquote>
<p>Haben die Member keinen Zugriff auf die öffentlichen Member / Funktionen der Objekte, in denen sie enthalten sind?</p>
</blockquote>
<p>Zugriff, ja. Aber ein Element kennt nur sich und weiß auch nicht von allein, worin es enthalten ist.</p>
<p>Du hast uns leider nicht verraten, wo diese app.world-Zeile steht.</p>
<p>Überhaupt hast Du zu wenig verraten.</p>
<p>Google mal &quot;separation of concerns&quot;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2165721</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165721</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Mon, 09 Jan 2012 12:23:23 GMT</pubDate></item><item><title><![CDATA[Reply to Informationsaustausch zwischen verschiedenen Klassen on Mon, 09 Jan 2012 12:17:10 GMT]]></title><description><![CDATA[<p>kleiner Troll schrieb:</p>
<blockquote>
<p>Meine Antwort wäre folgendes.<br />
Turm.shot() gibt als Ergebnis die Änderung der Punktzahl zurück.</p>
</blockquote>
<p>Halt ich für die unter den gegebenen Umständen momentan beste Idee <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/2165725</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2165725</guid><dc:creator><![CDATA[dot]]></dc:creator><pubDate>Mon, 09 Jan 2012 12:17:10 GMT</pubDate></item></channel></rss>