<?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[gegenseitiges includieren]]></title><description><![CDATA[<p>ich habe mir eine map.h und eine player.h erstelt, allerdings brauchen sie die funktionen und variablen der anderen. wie kann ich beide gegenseitig includieren ohne die beiden klassen in eine .h datei zu schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/319453/gegenseitiges-includieren</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Jul 2026 10:10:33 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/319453.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 19 Aug 2013 11:56:38 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 11:56:38 GMT]]></title><description><![CDATA[<p>ich habe mir eine map.h und eine player.h erstelt, allerdings brauchen sie die funktionen und variablen der anderen. wie kann ich beide gegenseitig includieren ohne die beiden klassen in eine .h datei zu schreiben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347015</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347015</guid><dc:creator><![CDATA[WhileTrueDo]]></dc:creator><pubDate>Mon, 19 Aug 2013 11:56:38 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 12:01:58 GMT]]></title><description><![CDATA[<p>1. Design überdenken<br />
2. Design überdenken<br />
3. Design überdenken<br />
4. Forward-Declarations (-&gt; ggf. Google)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347018</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347018</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 19 Aug 2013 12:01:58 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 12:05:35 GMT]]></title><description><![CDATA[<p>daddy_felix schrieb:</p>
<blockquote>
<p>1. Design überdenken<br />
2. Design überdenken<br />
3. Design überdenken<br />
4. Forward-Declarations (-&gt; ggf. Google)</p>
</blockquote>
<p>sind dass die einzigen möglichkeiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347019</guid><dc:creator><![CDATA[WhileTrueDo]]></dc:creator><pubDate>Mon, 19 Aug 2013 12:05:35 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 12:07:34 GMT]]></title><description><![CDATA[<p>Du baust sonst ein Kreis, überleg dir mal was du vorhast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347020</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347020</guid><dc:creator><![CDATA[Fuchs aus dem Wald]]></dc:creator><pubDate>Mon, 19 Aug 2013 12:07:34 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 12:09:10 GMT]]></title><description><![CDATA[<p>Inversion of Control gibts noch.</p>
<p>Bzw Dependency Injection. Ist aber beides Javalike und ich kanns beides nicht untereinander auseinander halten.</p>
<p>Der &quot;Trick&quot; ist halt, dass du nicht gegen was konkretes programmierst, sondern nur gegen die öffentlichen Schnittstellen.</p>
<p>Und wenn die Klassen sich dann noch gegenseitig brauchen, musst du halt Forward-Declarations benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347021</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347021</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 19 Aug 2013 12:09:10 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 12:10:28 GMT]]></title><description><![CDATA[<p>ich glaube das einfachte ist einfach eine map/player.h zu machen danke für deine hilfe <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>
]]></description><link>https://www.c-plusplus.net/forum/post/2347022</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347022</guid><dc:creator><![CDATA[WhileTrueDo]]></dc:creator><pubDate>Mon, 19 Aug 2013 12:10:28 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 12:15:59 GMT]]></title><description><![CDATA[<p>&quot;include&quot; bedeutet &quot;Textersetzung&quot;.</p>
<p>Beispiel:</p>
<p>&quot;Test.h&quot;:</p>
<pre><code class="language-cpp">class Test
{
};
</code></pre>
<p>&quot;Foo.h&quot;:</p>
<pre><code class="language-cpp">#include &quot;Test.h&quot;

class Foo
{
};
</code></pre>
<p>Der Präprozessor macht aus &quot;Foo.h&quot; dann</p>
<pre><code class="language-cpp">class Test
{
};

class Foo
{
};
</code></pre>
<p>edit:</p>
<p>WhileTrueDo schrieb:</p>
<blockquote>
<p>ich glaube das einfachte ist einfach eine map/player.h zu machen danke für deine hilfe <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>
</blockquote>
<p>wenn du damit meinst, dass du beide Klassendeklarationen in ein Headerdatei schrieben willst, ist das so ziemlich das dämlichste, was du in der Situation machen kannst <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>Ohne forward-Deklaration wirst du mit dem Ansatz übrigens auch scheitern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347023</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 19 Aug 2013 12:15:59 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 12:20:07 GMT]]></title><description><![CDATA[<p>könntest du mir dannn bitte genau schreiben wie ich das machen soll also auch mit den namen meiner klassen und header?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347024</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347024</guid><dc:creator><![CDATA[WhileTrueDo]]></dc:creator><pubDate>Mon, 19 Aug 2013 12:20:07 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 12:26:10 GMT]]></title><description><![CDATA[<pre><code>// Player.h
#pragma once

class Map; // Forward Declaration

class Player
{
public:
  void foo(Map &amp; m);
};
</code></pre>
<pre><code>// Player.cpp
#include &quot;Player.h&quot;
#include &quot;Map.h&quot;

void Player::foo(Map &amp; m)
{
  m.bar(*this);
}
</code></pre>
<pre><code>//Map.h
#pragma once

class Player; // Forward Declaration

class Map
{
public:
  void bar(Player &amp; p);
};
</code></pre>
<pre><code>//Map.cpp
#include &quot;Map.h&quot;
#include &quot;Player.h&quot;

void Map::bar(Player &amp; p)
{
  p.foo(*this);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2347027</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347027</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 19 Aug 2013 12:26:10 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 12:27:25 GMT]]></title><description><![CDATA[<p>Map.h:</p>
<pre><code class="language-cpp">class Player;

class Map
{
};
</code></pre>
<p>Player.h:</p>
<pre><code class="language-cpp">class Map;

class Player
{
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2347028</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347028</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 19 Aug 2013 12:27:25 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 12:29:46 GMT]]></title><description><![CDATA[<p>ich schreibe meine funktionen ganz normal in die class und kann sie ganz normal definieren und nutzen oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347029</guid><dc:creator><![CDATA[WhileTrueDo]]></dc:creator><pubDate>Mon, 19 Aug 2013 12:29:46 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 12:31:55 GMT]]></title><description><![CDATA[<p>Hä?<br />
Ich versteh die Frage nicht. Es sei denn ich missverstehe das Offensichtliche.</p>
<p>Was ist an meinem Beispiel nicht zu verstehen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347030</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347030</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 19 Aug 2013 12:31:55 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 12:37:16 GMT]]></title><description><![CDATA[<p>wo baue ich die funktion der player class &quot;moveplayer(char Direction, Player playernumber, Map mapnumber)&quot; und die der class Map ein?</p>
<p>map- und playernumber sind arrays.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347031</guid><dc:creator><![CDATA[WhileTrueDo]]></dc:creator><pubDate>Mon, 19 Aug 2013 12:37:16 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 12:41:07 GMT]]></title><description><![CDATA[<p>Sorry, aber so ungenau wie du Fragen stellst und deinen Quellcode beschreibst, fällt mir grad nur das hier ein: <a href="http://www.c-plusplus.net/forum/112134-full" rel="nofollow">Link</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347034</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Mon, 19 Aug 2013 12:41:07 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 12:42:19 GMT]]></title><description><![CDATA[<p>Du baust die Funktion nicht ein, sondern du übergibst eine Referenz dem Konstruktor. Dann kannst du die Funktionen in deiner Klasse aufrufen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347036</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347036</guid><dc:creator><![CDATA[wuttt]]></dc:creator><pubDate>Mon, 19 Aug 2013 12:42:19 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 13:05:04 GMT]]></title><description><![CDATA[<p>Wieso brauchen Player und Map dieselbe Methode?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347046</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347046</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 19 Aug 2013 13:05:04 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Mon, 19 Aug 2013 17:07:42 GMT]]></title><description><![CDATA[<p>nein nicht die selbe. dass sieht so aus :</p>
<pre><code>#ifndef MAP_H
#define MAP_H
#include &lt;iostream&gt;
#include &quot;player.h&quot;
using namespace std;

class Map
{
public  :
	Map();
    void createBlock(Map mapnum);
	void deleteBlock(Map mapnum, Player playernumber);
	void clearMap(Map mapnum,int mapwidth , int mapheight);

	int  MapWidth;
	int  MapHeight;

	struct S_Map
	{
		bool InUse;
		int  ID;
	};

	S_Map Map1[79][23];
};
</code></pre>
<pre><code>#ifndef PLAYER_H
#define PLAYER_H
#include &lt;iostream&gt;
#include &quot;map.h&quot;
using namespace std;

class Player
{
public  :
	Player();
	void DevideBonus(Player playernumber);
	void NamePlayer(Player playernumber);
	void HealPlayer(Player playernumber);
	void KillPlayer(Player playernumber);
	void PlayerMove(Player playernumber, char direction[20], Map mapnum);
	void LevelUp(Player playernumber);
	void GiveXP(Player playernumber);
	int  DestPoints;
	int  X_player;
	int  Y_player;
private :
	int  LivePoints;
	int  XPPoints;
	int  BonusPlayer;
	int  Level;
	char PLayerName[20];
	bool GhostMode;
};

#endif;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2347081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347081</guid><dc:creator><![CDATA[WhileTrueDo]]></dc:creator><pubDate>Mon, 19 Aug 2013 17:07:42 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Tue, 20 Aug 2013 07:23:41 GMT]]></title><description><![CDATA[<p>Lies bitte erstmal ein gutes Grundlagenbuch.</p>
<p>1. Übergabe von Objekttypen sollte als &quot;const Reference&quot; geschenen<br />
2. Wieso übergibst du Methoden der Klasse &quot;Map&quot; eine &quot;Map&quot;? (Analog &quot;Player&quot;)<br />
3. In deiner map.h fehlt das #endif<br />
4. Wieso ist &quot;PlayerName&quot; kein std::string?<br />
5. &quot;char direction[20]&quot; - wenn die Anzahl der möglichen Richtungen fest vorgegeben ist, sollte das besser ein enum sein<br />
6. Warum übergibst du Map::clearMap die Breite und Höhe?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347146</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Tue, 20 Aug 2013 07:23:41 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Tue, 20 Aug 2013 07:19:27 GMT]]></title><description><![CDATA[<p>7. Wieso ist Map1 in der Map-Klasse kein vector&lt;vector&lt;S_Map&gt;&gt;?<br />
8. Wieso ist in der Map-Klasse nichts privat gekapselt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347148</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 20 Aug 2013 07:19:27 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Tue, 20 Aug 2013 12:26:17 GMT]]></title><description><![CDATA[<p>meine frage ist aber wie ich dass beides includieren kan nicht wass ich für fehler mache</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347214</guid><dc:creator><![CDATA[WhileTrueDo]]></dc:creator><pubDate>Tue, 20 Aug 2013 12:26:17 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Tue, 20 Aug 2013 12:27:20 GMT]]></title><description><![CDATA[<p>und dass #endif hab ich nur nicht mit rauskopiert</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347215</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347215</guid><dc:creator><![CDATA[WhileTrueDo]]></dc:creator><pubDate>Tue, 20 Aug 2013 12:27:20 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Tue, 20 Aug 2013 12:38:18 GMT]]></title><description><![CDATA[<p>WhileTrueDo schrieb:</p>
<blockquote>
<p>meine frage ist aber wie ich dass beides includieren kan nicht wass ich für fehler mache</p>
</blockquote>
<p>das haben wir dir ja nun oft genug erklärt. Wenn du Parameterübergaben nicht als call-by-value machst, sondern als call-by-reference, benötigst du das include nicht, sondern kannst auf forward declarations zurückgreifen.</p>
<p>Das war jetzt meine letzte hilfreiche Antwort. Solange ich nicht das Gefühl habe, dass du auch nur ansatzweise versuchst, unsere Antworten nachzuvollziehen oder gar Eigeninitiative zu zeigen, werde ich hier nichts mehr schreiben.</p>
<p>Und ich hoffe, auch sonst keiner.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347217</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Tue, 20 Aug 2013 12:38:18 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Tue, 20 Aug 2013 12:42:36 GMT]]></title><description><![CDATA[<p>ich bin ein richtiger anfänger ich würde dass ja gerne nachvollziehn geht aber nunmal nicht deswegen fragte ich auch nach einer vollständigen lösung und nicht nach der methode es wäre in meinem interesse eine lösung zu kriegen die ich danach aus dem code heraus verstehen kann</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347218</guid><dc:creator><![CDATA[WhileTrueDo]]></dc:creator><pubDate>Tue, 20 Aug 2013 12:42:36 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Tue, 20 Aug 2013 12:43:29 GMT]]></title><description><![CDATA[<p>#include ist, wei schon gesagt reine Textersetzung.<br />
Anstelle des #include &quot;player.h&quot; kommt der Inhalt der Datei player.h, dort ist ein #includ &quot;map.h&quot;, das heißt der Inhalt von map.h kommt an diese Stelle, dort steht aber ein #include &quot;player.h&quot;, das heißt der Inhalt der Datei player.h kommt an diese Stelle, dort steht aber ein #include &quot;map.h&quot;,....<br />
Die Lösung sind Forward Deklarationen, lese darüber in deinem Grundlagenbuch nach.<br />
&quot;If your favorite introductory C++ textbook doesn't discuss [forward declarations], carefully tear out all its pages and recycle them. Dispose of the book's cover in an environmentally<br />
sound manner, then borrow or buy a better textbook.&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347219</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347219</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Tue, 20 Aug 2013 12:43:29 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Tue, 20 Aug 2013 12:48:31 GMT]]></title><description><![CDATA[<p>könntest du basierend auf der player.h und der map.h die bereits herausgegeben habe eine solche forward deklaration durchführen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347220</guid><dc:creator><![CDATA[WhileTrueDo]]></dc:creator><pubDate>Tue, 20 Aug 2013 12:48:31 GMT</pubDate></item><item><title><![CDATA[Reply to gegenseitiges includieren on Tue, 20 Aug 2013 12:50:12 GMT]]></title><description><![CDATA[<p>WhileTrueDo schrieb:</p>
<blockquote>
<p>könntest du basierend auf der player.h und der map.h die bereits herausgegeben habe eine solche forward deklaration durchführen ?</p>
</blockquote>
<p>das hat Skym0sh0 schon auf der ersten Seite getan.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2347221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2347221</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Tue, 20 Aug 2013 12:50:12 GMT</pubDate></item></channel></rss>