<?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[Ein Problem mit Klassen...]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>Ich habe da so ein Problem...<br />
Ich wüsste nicht, wonach ich hier oder bei Google suchen sollte, deshalb dieser Thread.</p>
<p>Um mein Problem besser beschreiben zu können, erstmal meine Situation:<br />
Ich habe folgendes Klassengebilde (einfaches Beispiel, dass auf meine Situation jedoch genau zutrifft):</p>
<pre><code class="language-cpp">//=== Animal.h ===
#if !defined(ANIMAL_H_)
#define ANIMAL_H_

class CAnimal
{
private:
	char id[0x20];
public:
	CAnimal(char* ID){SetID(ID);};
	virtual ~CAnimal();

	virtual void SetID(char* ID);
	virtual char* ID(){return id;};

	virtual char* WhatAmI(){return &quot;Animal&quot;;};
};

#endif
</code></pre>
<pre><code class="language-cpp">//=== Insect.h ===
#if !defined(INSECT_H_)
#define INSECT_H_

#include &quot;Animal.h&quot;
class CInsect:public CAnimal
{
public:
	CInsect(char* ID){CAnimal::SetID(ID);};
	virtual ~CInsect();

	virtual char* WhatAmI(){return &quot;An insect&quot;;};
};

#endif
</code></pre>
<pre><code class="language-cpp">//=== Ant.h ==
#if !defined(ANT_H_)
#define ANT_H_

#include &quot;Insect.h&quot;
class CAnt:public CInsect
{
public:
	CAnt(char* ID){CInsect::SetID(ID);};
	virtual ~CAnt();

	virtual char* WhatAmI(){return &quot;An ant&quot;;};
};

#endif
</code></pre>
<p>Folgende Struktur soll alle &quot;Ameisen&quot; (CAnt), die im Programm kontruiert werden, auflisten (wobei jede ihre individuelle ID (siehe CAnimal) hat, um später identifiziert werden zu können):</p>
<pre><code class="language-cpp">//List.h
#if !defined(LIST_H_)
#define LIST_H_

#include &lt;vector&gt;
using namespace std

#include &quot;Ant.h&quot;
struct TList
{
	vector&lt;CAnt*&gt; ants;
};

CAnt* FindAnt(TList* List,char* ID);	//findet in einer TList die Ameise mit der gegebenen ID, gibt NULL zurück falls nicht gefunden

#endif
</code></pre>
<p>Mein Problem ist nun folgendes:</p>
<p>Angenommen, in CAnt sei noch (als private)</p>
<pre><code class="language-cpp">CAnt* BestFriend
</code></pre>
<p>und es solle eine Funktion geben, die einer Ameise ihre beste Freundin <strong>via ID</strong> zuweist. Das stelle ich mir so vor:</p>
<pre><code class="language-cpp">void CAnt::MakeBestFriend(char* ID,TList* List)
{
	BestFriend = FindAnt(List,ID);
}
</code></pre>
<p>Ich muss also &quot;List.h&quot; in &quot;Ant.h&quot; einbeziehen (#include &quot;List.h&quot;), <strong>was jedoch jede Menge Fehler verursacht</strong>, die ich mir leider nicht wirklich erklären kann...</p>
<p>Es ist übrigens notwendig (glaube ich...), dass als Argumente von MakeBestFriend eine ID und ein Pointer zu einer TList übergeben wird, da die Ameisenliste aus einer INI-Datei geladen wird.</p>
<p>Gibt es hier eine Lösung zu oder muss ich dieses Konzept umwerfen?</p>
<p>Danke im Voraus! <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="🙂"
    /><br />
-DrKrake</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/174769/ein-problem-mit-klassen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 21:52:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/174769.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 03 Mar 2007 12:10:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Ein Problem mit Klassen... on Sat, 03 Mar 2007 12:10:45 GMT]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>Ich habe da so ein Problem...<br />
Ich wüsste nicht, wonach ich hier oder bei Google suchen sollte, deshalb dieser Thread.</p>
<p>Um mein Problem besser beschreiben zu können, erstmal meine Situation:<br />
Ich habe folgendes Klassengebilde (einfaches Beispiel, dass auf meine Situation jedoch genau zutrifft):</p>
<pre><code class="language-cpp">//=== Animal.h ===
#if !defined(ANIMAL_H_)
#define ANIMAL_H_

class CAnimal
{
private:
	char id[0x20];
public:
	CAnimal(char* ID){SetID(ID);};
	virtual ~CAnimal();

	virtual void SetID(char* ID);
	virtual char* ID(){return id;};

	virtual char* WhatAmI(){return &quot;Animal&quot;;};
};

#endif
</code></pre>
<pre><code class="language-cpp">//=== Insect.h ===
#if !defined(INSECT_H_)
#define INSECT_H_

#include &quot;Animal.h&quot;
class CInsect:public CAnimal
{
public:
	CInsect(char* ID){CAnimal::SetID(ID);};
	virtual ~CInsect();

	virtual char* WhatAmI(){return &quot;An insect&quot;;};
};

#endif
</code></pre>
<pre><code class="language-cpp">//=== Ant.h ==
#if !defined(ANT_H_)
#define ANT_H_

#include &quot;Insect.h&quot;
class CAnt:public CInsect
{
public:
	CAnt(char* ID){CInsect::SetID(ID);};
	virtual ~CAnt();

	virtual char* WhatAmI(){return &quot;An ant&quot;;};
};

#endif
</code></pre>
<p>Folgende Struktur soll alle &quot;Ameisen&quot; (CAnt), die im Programm kontruiert werden, auflisten (wobei jede ihre individuelle ID (siehe CAnimal) hat, um später identifiziert werden zu können):</p>
<pre><code class="language-cpp">//List.h
#if !defined(LIST_H_)
#define LIST_H_

#include &lt;vector&gt;
using namespace std

#include &quot;Ant.h&quot;
struct TList
{
	vector&lt;CAnt*&gt; ants;
};

CAnt* FindAnt(TList* List,char* ID);	//findet in einer TList die Ameise mit der gegebenen ID, gibt NULL zurück falls nicht gefunden

#endif
</code></pre>
<p>Mein Problem ist nun folgendes:</p>
<p>Angenommen, in CAnt sei noch (als private)</p>
<pre><code class="language-cpp">CAnt* BestFriend
</code></pre>
<p>und es solle eine Funktion geben, die einer Ameise ihre beste Freundin <strong>via ID</strong> zuweist. Das stelle ich mir so vor:</p>
<pre><code class="language-cpp">void CAnt::MakeBestFriend(char* ID,TList* List)
{
	BestFriend = FindAnt(List,ID);
}
</code></pre>
<p>Ich muss also &quot;List.h&quot; in &quot;Ant.h&quot; einbeziehen (#include &quot;List.h&quot;), <strong>was jedoch jede Menge Fehler verursacht</strong>, die ich mir leider nicht wirklich erklären kann...</p>
<p>Es ist übrigens notwendig (glaube ich...), dass als Argumente von MakeBestFriend eine ID und ein Pointer zu einer TList übergeben wird, da die Ameisenliste aus einer INI-Datei geladen wird.</p>
<p>Gibt es hier eine Lösung zu oder muss ich dieses Konzept umwerfen?</p>
<p>Danke im Voraus! <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="🙂"
    /><br />
-DrKrake</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1238467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238467</guid><dc:creator><![CDATA[DrKrake]]></dc:creator><pubDate>Sat, 03 Mar 2007 12:10:45 GMT</pubDate></item><item><title><![CDATA[Reply to Ein Problem mit Klassen... on Sat, 03 Mar 2007 14:01:39 GMT]]></title><description><![CDATA[<p>Poste mal die Fehlermeldungen.<br />
Hast du Namenskonflikte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1238514</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238514</guid><dc:creator><![CDATA[Die_Gute_Fee]]></dc:creator><pubDate>Sat, 03 Mar 2007 14:01:39 GMT</pubDate></item><item><title><![CDATA[Reply to Ein Problem mit Klassen... on Sat, 03 Mar 2007 15:11:36 GMT]]></title><description><![CDATA[<p>OK, hier sind die Fehlermeldungen, die erscheinen, wenn ich &quot;List.h&quot; in &quot;Ant.h&quot; einbeziehe:</p>
<p>MSVC++ 6.0 schrieb:</p>
<blockquote>
<p>--------------------Konfiguration: TestKlassen - Win32 Debug--------------------<br />
Kompilierung läuft...<br />
Main.cpp<br />
d:\cpp\testklassen\list.h(12) : error C2065: 'CAnt' : nichtdeklarierter Bezeichner<br />
d:\cpp\testklassen\list.h(12) : error C2059: Syntaxfehler : '&gt;'<br />
d:\cpp\testklassen\list.h(13) : error C2143: Syntaxfehler : Fehlendes ';' vor '}'<br />
d:\cpp\testklassen\list.h(15) : error C2146: Syntaxfehler : Fehlendes ',' vor Bezeichner 'ID'<br />
d:\cpp\testklassen\list.h(15) : error C2065: 'ID' : nichtdeklarierter Bezeichner<br />
d:\cpp\testklassen\list.h(15) : error C2143: Syntaxfehler : Fehlendes ',' vor ')'<br />
d:\cpp\testklassen\ant.h(9) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'<br />
d:\cpp\testklassen\ant.h(11) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'<br />
d:\cpp\testklassen\ant.h(12) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'<br />
d:\cpp\testklassen\ant.h(14) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'<br />
d:\cpp\testklassen\ant.h(15) : error C2143: Syntaxfehler : Fehlendes ';' vor '}'<br />
d:\cpp\testklassen\main.cpp(4) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'<br />
d:\cpp\testklassen\main.cpp(11) : error C2143: Syntaxfehler : Fehlendes ';' vor '}'<br />
d:\cpp\testklassen\main.cpp(12) : error C2143: Syntaxfehler : Fehlendes ';' vor '}'<br />
d:\cpp\testklassen\main.cpp(12) : fatal error C1001: INTERNER COMPILER- FEHLER<br />
(Compiler-Datei &quot;YÃ&quot;, Zeile 1)<br />
Bitte wählen Sie im Menü &quot;?&quot; von Visual C++<br />
den Befehl &quot;Software Service&quot;, oder öffnen Sie die Hilfedatei für den Software Service, um weitere Informationen zu erhalten<br />
Fehler beim Ausführen von cl.exe.</p>
<p>TestKlassen.exe - 15 Fehler, 0 Warnung(en)</p>
</blockquote>
<p>Beziehe ich sie in &quot;Animal.h&quot; (die Basisklasse) ein, was wesentlich nützlicher wäre, erscheint folgende Meldung:</p>
<p>MSVC++ 6.0 schrieb:</p>
<blockquote>
<p>--------------------Konfiguration: TestKlassen - Win32 Debug--------------------<br />
Kompilierung läuft...<br />
Main.cpp<br />
d:\cpp\testklassen\insect.h(7) : error C2504: 'CAnimal' : Basisklasse undefiniert<br />
d:\cpp\testklassen\main.cpp(6) : error C2039: 'SetID' : Ist kein Element von 'CAnt'<br />
d:\cpp\testklassen\ant.h(6) : Siehe Deklaration von 'CAnt'<br />
Fehler beim Ausführen von cl.exe.</p>
<p>TestKlassen.exe - 2 Fehler, 0 Warnung(en)</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1238536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238536</guid><dc:creator><![CDATA[DrKrake]]></dc:creator><pubDate>Sat, 03 Mar 2007 15:11:36 GMT</pubDate></item><item><title><![CDATA[Reply to Ein Problem mit Klassen... on Sat, 03 Mar 2007 16:54:31 GMT]]></title><description><![CDATA[<p>Ich entschuldige den Double-Post, aber das Problem ist gelöst.<br />
Das Stichwort ist &quot;forward declaration&quot;...</p>
<p>Unmittelbar vor der Deklaration von &quot;TList&quot; deklariere ich &quot;class CAnt;&quot;.<br />
In CAnt kann ich nun ohne Probleme &quot;List.h&quot; einbeziehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1238573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1238573</guid><dc:creator><![CDATA[DrKrake]]></dc:creator><pubDate>Sat, 03 Mar 2007 16:54:31 GMT</pubDate></item></channel></rss>