<?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[2 Klassen (Gegenseitige Abhängigkeit) ??]]></title><description><![CDATA[<p>Im folgenden Code wird die Klasse CElem in der klasse CGroup gespeichert.</p>
<p>Über die Funktion Single der CElem klasse kann eine CGroup klasse erzeugt werdne, in der sich das CElem dann befindet..</p>
<p>Problem die Klassen sind gegenseitig abhängig. mache ich eine Forward Deklaration &quot;class CGroup;&quot; vor elem kommt fehler &quot;C2514: no construktor&quot;<br />
oder mach ic hwas falsch?</p>
<pre><code class="language-cpp">class CElem{

	int m_i;
public:
	CElem(){}
	CGroup* Single(){
       	return new CGroup(this);
	}
};

class CGroup{

	CTypedPtrArray&lt;CPtrArray,CElem*&gt; m_paElem;
public:

	CGroup(){}
	CGroup(CElem *p){
		m_paElem.Add(p);
	}

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/177688/2-klassen-gegenseitige-abhängigkeit</link><generator>RSS for Node</generator><lastBuildDate>Sat, 27 Jun 2026 08:27:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/177688.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Apr 2007 04:57:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2 Klassen (Gegenseitige Abhängigkeit) ?? on Tue, 03 Apr 2007 04:57:16 GMT]]></title><description><![CDATA[<p>Im folgenden Code wird die Klasse CElem in der klasse CGroup gespeichert.</p>
<p>Über die Funktion Single der CElem klasse kann eine CGroup klasse erzeugt werdne, in der sich das CElem dann befindet..</p>
<p>Problem die Klassen sind gegenseitig abhängig. mache ich eine Forward Deklaration &quot;class CGroup;&quot; vor elem kommt fehler &quot;C2514: no construktor&quot;<br />
oder mach ic hwas falsch?</p>
<pre><code class="language-cpp">class CElem{

	int m_i;
public:
	CElem(){}
	CGroup* Single(){
       	return new CGroup(this);
	}
};

class CGroup{

	CTypedPtrArray&lt;CPtrArray,CElem*&gt; m_paElem;
public:

	CGroup(){}
	CGroup(CElem *p){
		m_paElem.Add(p);
	}

};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1258275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258275</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 03 Apr 2007 04:57:16 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Klassen (Gegenseitige Abhängigkeit) ?? on Tue, 03 Apr 2007 05:28:48 GMT]]></title><description><![CDATA[<p>Zumindest eine der Klassen musst du in .cpp- und .h-Datei aufteilen - also die Definition von der Implementierung trennen -, dann passt das auch mit der Forward declaration.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258280</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 03 Apr 2007 05:28:48 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Klassen (Gegenseitige Abhängigkeit) ?? on Tue, 03 Apr 2007 05:32:29 GMT]]></title><description><![CDATA[<p>jo wenn ich nun die zwei Klassen (Blöcke vertausche) und dann die nadre Forward Deklarier, funktioniert... das Problem triff wohl nur auf wenn ein Konstruktor im vorraus compalliert werden soll..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258281</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 03 Apr 2007 05:32:29 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Klassen (Gegenseitige Abhängigkeit) ?? on Tue, 03 Apr 2007 05:36:54 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>das Problem triff wohl nur auf wenn ein Konstruktor im v****** compalliert werden soll..</p>
</blockquote>
<p>Nein, das hat mit Konstruktoren nichts zu tun. In CGroup hantierst du nur mit dem CElem-Zeiger selbst, du greifst nicht über ihn auf das Objekt zu. Daher reicht hier die Forward declaration.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258283</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 03 Apr 2007 05:36:54 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Klassen (Gegenseitige Abhängigkeit) ?? on Tue, 03 Apr 2007 08:28:04 GMT]]></title><description><![CDATA[<p>Eine Design Frage wage ich zu stellen.</p>
<p>Ein Element hat eine Funktion die Single heisst, mit der eine Gruppe kreiert wird. Ich würde aus reiner Design-Sicht als ausgesprochen verwirrend betrachten. Immerhin wird die Gruppe mit new als neues Objekt angelegt, was aus dem FunktionsNamen &quot;Single&quot; in keinster Weise hervorgeht. Auch ist es nicht unbedingt naheliegend das ein Element seine Gruppe kreiert, man erwartet das eher umgekehrt.</p>
<p>Ich persönlich würde das eher so machen:</p>
<pre><code class="language-cpp">class CElem{

    int m_i;
public:
    CElem(){}
};

class CGroup{

    CTypedPtrArray&lt;CPtrArray,CElem*&gt; m_paElem;
public:

    CGroup(){}
    CGroup(CElem *p){
        m_paElem.Add(p);
    }

   static CGroup* CreateGroup(CElement* firstElement) {
      return new CGroup(firstElement);
   }

};
</code></pre>
<p>Auf die Art könntest Du z.B. auch in der Klasse CGroup eine statische Liste aller angelegten Gruppen verwalten oder ähnliches.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258352</guid><dc:creator><![CDATA[skals]]></dc:creator><pubDate>Tue, 03 Apr 2007 08:28:04 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Klassen (Gegenseitige Abhängigkeit) ?? on Tue, 03 Apr 2007 08:45:20 GMT]]></title><description><![CDATA[<p>ja danke für den Tipp.. werde dies in Betracht ziehen;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258363</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Tue, 03 Apr 2007 08:45:20 GMT</pubDate></item><item><title><![CDATA[Reply to 2 Klassen (Gegenseitige Abhängigkeit) ?? on Tue, 03 Apr 2007 08:47:44 GMT]]></title><description><![CDATA[<p>Hm, ich würde einfach einen place holder benutzen. Im prinzip so:</p>
<pre><code class="language-cpp">class A;

class B
{
   A a;
};

class A
{
   B b;
};
</code></pre>
<p>hatte auch mal das Problem, dass sich beide Klassen kennen mussten. sollte aufjeden fall funktionieren. Wenn du deine Klassendefinitionen in unterschiedlichen Header-Files hast, musst du darauf achten, dass das Include für die Klasse mit dem place holder nach der definition der anderen klasse kommt.</p>
<p>gruß<br />
tyr377</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1258365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1258365</guid><dc:creator><![CDATA[tyr377]]></dc:creator><pubDate>Tue, 03 Apr 2007 08:47:44 GMT</pubDate></item></channel></rss>