<?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[Zwei Klassen die sich gegenseitig kennen]]></title><description><![CDATA[<p>Ich habe zwei Klassen Person und myLlist. myList verwaltet personen und Personen sollte eine myList haben... für Kinder und so weiter.</p>
<p>Hier der Code:<br />
<strong>person.h</strong></p>
<pre><code class="language-cpp">#ifndef _PERSON_H_
#define _PERSON_H_

#include &quot;mylist.h&quot;
#include &lt;string&gt;
using std::string;

class Person{
	public:
		Person(string name);
		string getName();
		void setName(string name);

	private:
		string name;
};

#endif
</code></pre>
<p><strong>person.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;person.h&quot;

Person::Person(string name)
:name(name){}

string Person::getName(){
	return name;
}

void Person::setName(string name){
	this-&gt;name = name;
}
</code></pre>
<p><strong>mylist.h</strong></p>
<pre><code class="language-cpp">#ifndef _MYLIST_H_
#define _MYLIST_H_

#include &quot;person.h&quot;
#include &lt;list&gt;
using std::list;

class myList{
	public:
		myList();
		void addPerson(Person* p);
		void removePerson(Person* p);
		void print();

	private:
		list&lt;Person*&gt; *personen;
};

#endif
</code></pre>
<p><strong>mylist.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;mylist.h&quot;
#include &lt;iostream&gt;
using std::cout;
using std::endl;

myList::myList(){
	personen = new list&lt;Person*&gt;();
}

void myList::addPerson(Person* p){
	personen-&gt;push_back(p);
}

void myList::removePerson(Person* p){
	personen-&gt;remove(p);
}

void myList::print(){
	list&lt;Person*&gt;::iterator itr = personen-&gt;begin();
	for(; itr != personen-&gt;end(); itr++){
		cout &lt;&lt; (*itr)-&gt;getName() &lt;&lt; endl;
	}
}
</code></pre>
<p><strong>main.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;person.h&quot;
#include &quot;mylist.h&quot;

int main(){
	Person * p1 = new Person(&quot;Fritz&quot;);
	Person * p2 = new Person(&quot;Hans&quot;);

	myList * list = new myList();

	list-&gt;addPerson(p1);
	list-&gt;addPerson(p2);

	list-&gt;print();

	return 0;
}
</code></pre>
<p>Wenn ich das aber compelieren will erhalte ich volgende fehlermeldung:<br />
g++ main.cpp mylist.cpp person.cpp -o test<br />
mylist.h:11: Fehler: »Person« wurde nicht deklariert<br />
mylist.h:12: Fehler: »Person« wurde nicht deklariert<br />
mylist.h:16: Fehler: »Person« wurde in diesem Gültigkeitsbereich nicht definiertmylist.h:16: Fehler: Templateargument 1 ist ungültig<br />
mylist.h:16: Fehler: Templateargument 2 ist ungültig<br />
main.cpp: In function »int main()«:<br />
main.cpp:10: Fehler: keine passende Funktion für Aufruf von »myList::addPerson(Person*&amp;)«<br />
mylist.h:11: Anmerkung: Kandidaten sind: void myList::addPerson(int*)<br />
main.cpp:11: Fehler: keine passende Funktion für Aufruf von »myList::addPerson(Person*&amp;)«<br />
mylist.h:11: Anmerkung: Kandidaten sind: void myList::addPerson(int*)<br />
mylist.h:11: Fehler: »Person« wurde nicht deklariert<br />
mylist.h:12: Fehler: »Person« wurde nicht deklariert<br />
mylist.h:16: Fehler: »Person« wurde in diesem Gültigkeitsbereich nicht definiertmylist.h:16: Fehler: Templateargument 1 ist ungültig<br />
mylist.h:16: Fehler: Templateargument 2 ist ungültig</p>
<p>und das nur wenn ich in person.h das include mylist.h mache... ohne weiteren code hinzuzufügen... geht das in C++ nicht, kann ich mir irgendwie nicht vorstellen.<br />
Aber ich verstehe auch nicht was ich falsch mache.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/164207/zwei-klassen-die-sich-gegenseitig-kennen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 17:34:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/164207.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Nov 2006 08:01:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zwei Klassen die sich gegenseitig kennen on Mon, 06 Nov 2006 08:01:41 GMT]]></title><description><![CDATA[<p>Ich habe zwei Klassen Person und myLlist. myList verwaltet personen und Personen sollte eine myList haben... für Kinder und so weiter.</p>
<p>Hier der Code:<br />
<strong>person.h</strong></p>
<pre><code class="language-cpp">#ifndef _PERSON_H_
#define _PERSON_H_

#include &quot;mylist.h&quot;
#include &lt;string&gt;
using std::string;

class Person{
	public:
		Person(string name);
		string getName();
		void setName(string name);

	private:
		string name;
};

#endif
</code></pre>
<p><strong>person.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;person.h&quot;

Person::Person(string name)
:name(name){}

string Person::getName(){
	return name;
}

void Person::setName(string name){
	this-&gt;name = name;
}
</code></pre>
<p><strong>mylist.h</strong></p>
<pre><code class="language-cpp">#ifndef _MYLIST_H_
#define _MYLIST_H_

#include &quot;person.h&quot;
#include &lt;list&gt;
using std::list;

class myList{
	public:
		myList();
		void addPerson(Person* p);
		void removePerson(Person* p);
		void print();

	private:
		list&lt;Person*&gt; *personen;
};

#endif
</code></pre>
<p><strong>mylist.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;mylist.h&quot;
#include &lt;iostream&gt;
using std::cout;
using std::endl;

myList::myList(){
	personen = new list&lt;Person*&gt;();
}

void myList::addPerson(Person* p){
	personen-&gt;push_back(p);
}

void myList::removePerson(Person* p){
	personen-&gt;remove(p);
}

void myList::print(){
	list&lt;Person*&gt;::iterator itr = personen-&gt;begin();
	for(; itr != personen-&gt;end(); itr++){
		cout &lt;&lt; (*itr)-&gt;getName() &lt;&lt; endl;
	}
}
</code></pre>
<p><strong>main.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;person.h&quot;
#include &quot;mylist.h&quot;

int main(){
	Person * p1 = new Person(&quot;Fritz&quot;);
	Person * p2 = new Person(&quot;Hans&quot;);

	myList * list = new myList();

	list-&gt;addPerson(p1);
	list-&gt;addPerson(p2);

	list-&gt;print();

	return 0;
}
</code></pre>
<p>Wenn ich das aber compelieren will erhalte ich volgende fehlermeldung:<br />
g++ main.cpp mylist.cpp person.cpp -o test<br />
mylist.h:11: Fehler: »Person« wurde nicht deklariert<br />
mylist.h:12: Fehler: »Person« wurde nicht deklariert<br />
mylist.h:16: Fehler: »Person« wurde in diesem Gültigkeitsbereich nicht definiertmylist.h:16: Fehler: Templateargument 1 ist ungültig<br />
mylist.h:16: Fehler: Templateargument 2 ist ungültig<br />
main.cpp: In function »int main()«:<br />
main.cpp:10: Fehler: keine passende Funktion für Aufruf von »myList::addPerson(Person*&amp;)«<br />
mylist.h:11: Anmerkung: Kandidaten sind: void myList::addPerson(int*)<br />
main.cpp:11: Fehler: keine passende Funktion für Aufruf von »myList::addPerson(Person*&amp;)«<br />
mylist.h:11: Anmerkung: Kandidaten sind: void myList::addPerson(int*)<br />
mylist.h:11: Fehler: »Person« wurde nicht deklariert<br />
mylist.h:12: Fehler: »Person« wurde nicht deklariert<br />
mylist.h:16: Fehler: »Person« wurde in diesem Gültigkeitsbereich nicht definiertmylist.h:16: Fehler: Templateargument 1 ist ungültig<br />
mylist.h:16: Fehler: Templateargument 2 ist ungültig</p>
<p>und das nur wenn ich in person.h das include mylist.h mache... ohne weiteren code hinzuzufügen... geht das in C++ nicht, kann ich mir irgendwie nicht vorstellen.<br />
Aber ich verstehe auch nicht was ich falsch mache.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169373</guid><dc:creator><![CDATA[boxi]]></dc:creator><pubDate>Mon, 06 Nov 2006 08:01:41 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassen die sich gegenseitig kennen on Mon, 06 Nov 2006 08:11:43 GMT]]></title><description><![CDATA[<p>Du kannst zwei Header nicht wechselseitig ineinander einbinden. Das #include führt bloss dazu, daß der Präprozessor dort den Inhalt der Datei einbindet - und dank der Include-Guards steht jetzt die Definition von 'Person' HINTER 'myList'.</p>
<p>Als Lösung kannst du Forward-Deklarationen verwenden (die reichen zumindest dort aus, wo du nur den Namen der Zielklasse kennen mußt).</p>
<p>PS: Hat es einen Grund, daß du die list&lt;Person*&gt; auf dem Heap anlegst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169379</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169379</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 06 Nov 2006 08:11:43 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassen die sich gegenseitig kennen on Mon, 06 Nov 2006 09:13:05 GMT]]></title><description><![CDATA[<p>ähm... ok, und wie sieht so eine Forward dekleration aus?</p>
<p>PS: ich leg sie auf dem Heap weil es mir besser gefällt <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/1169419</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169419</guid><dc:creator><![CDATA[boxi]]></dc:creator><pubDate>Mon, 06 Nov 2006 09:13:05 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassen die sich gegenseitig kennen on Mon, 06 Nov 2006 09:17:39 GMT]]></title><description><![CDATA[<p>boxi schrieb:</p>
<blockquote>
<p>ähm... ok, und wie sieht so eine Forward dekleration aus?</p>
</blockquote>
<p>Ganz einfach:</p>
<pre><code class="language-cpp">class Person;
</code></pre>
<blockquote>
<p>PS: ich leg sie auf dem Heap weil es mir besser gefällt <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>
</blockquote>
<p>Das ist die wohl blödeste Antwort, die du geben könntest *scnr*<br />
Dadurch baust du dir wohl mehr Scherereien ein, als die ganze Sache Wert ist. Das geht los bei Speicherlecks über gegenseitige Beeinflussung bis hin zu potentiellen Zugriffsfehlern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169422</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169422</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 06 Nov 2006 09:17:39 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassen die sich gegenseitig kennen on Mon, 06 Nov 2006 10:29:48 GMT]]></title><description><![CDATA[<p>&quot;using&quot; in Header Files ist böse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169469</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 06 Nov 2006 10:29:48 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei Klassen die sich gegenseitig kennen on Mon, 06 Nov 2006 12:55:39 GMT]]></title><description><![CDATA[<p>boxi schrieb:</p>
<blockquote>
<p>...ich leg sie auf dem Heap weil es mir besser gefällt <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>
</blockquote>
<p>Javaist ? <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>
<p>Übrigens: Versuche im nächsten Schritt mal, ein paar &quot;(const) Referenzen&quot; einzubauen; das macht Vieles einfacher/eindeutiger/sicherer/performanter/ .... .<br />
@All: Bitte nicht mit der K-Kackerei anfangen: Ich weiß, daß Referenzen nicht das Allheimittel sind - aber im konkreten Fall könnten man mit ihnen Einiges verbessern.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1169583</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1169583</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 06 Nov 2006 12:55:39 GMT</pubDate></item></channel></rss>