<?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[Frage zu Klassen.]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich versuche schon paar stunden mich in Klassen einzuarbeiten, aber es klappt einfach nicht. Ich habe 2 Klassen, Klasse &quot;AB&quot; und Klasse &quot;CD&quot;. Ich möchte zugriff auf die member von AB über CD haben, und dasselbe für CD über AB. Hier der test code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class CD;

class AB
{
    private:
    CD test2; // error C2079: 'AB::test2' uses undefined class 'CD'

    public:
	friend class CD;
	void CallFromCD()
	{
		std::cout &lt;&lt; &quot;Hi from CallAB\n&quot;;
	}
	void CallCD()
	{
		//test2.CallFromAB();
	}

};
class CD
{
      private:
	  AB test1;

      public:
	  friend class AB;
	  void CallAB()
	  {
		   test1.CallFromCD();
	  }
	  void CallFromAB()
	  {
		   std::cout &lt;&lt; &quot;Hi from AB&quot; &lt;&lt; &quot;\n&quot;;
	  }
};
    int main()
    {
		CD MyVar;
		MyVar.CallAB();

    }
</code></pre>
<p>Wieso kann ich die Fkt von AB aus CD Rufen, aber nicht andersherum?</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244406/frage-zu-klassen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 10:49:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244406.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Jun 2009 20:00:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu Klassen. on Mon, 29 Jun 2009 20:00:16 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Ich versuche schon paar stunden mich in Klassen einzuarbeiten, aber es klappt einfach nicht. Ich habe 2 Klassen, Klasse &quot;AB&quot; und Klasse &quot;CD&quot;. Ich möchte zugriff auf die member von AB über CD haben, und dasselbe für CD über AB. Hier der test code:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class CD;

class AB
{
    private:
    CD test2; // error C2079: 'AB::test2' uses undefined class 'CD'

    public:
	friend class CD;
	void CallFromCD()
	{
		std::cout &lt;&lt; &quot;Hi from CallAB\n&quot;;
	}
	void CallCD()
	{
		//test2.CallFromAB();
	}

};
class CD
{
      private:
	  AB test1;

      public:
	  friend class AB;
	  void CallAB()
	  {
		   test1.CallFromCD();
	  }
	  void CallFromAB()
	  {
		   std::cout &lt;&lt; &quot;Hi from AB&quot; &lt;&lt; &quot;\n&quot;;
	  }
};
    int main()
    {
		CD MyVar;
		MyVar.CallAB();

    }
</code></pre>
<p>Wieso kann ich die Fkt von AB aus CD Rufen, aber nicht andersherum?</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734728</guid><dc:creator><![CDATA[Beginner123]]></dc:creator><pubDate>Mon, 29 Jun 2009 20:00:16 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Klassen. on Mon, 29 Jun 2009 20:03:00 GMT]]></title><description><![CDATA[<p>Wenn die Klasse <code>AB</code> ein <code>CD</code> -Objekt enthält und <code>CD</code> wiederum ein <code>AB</code> , wo soll das dann aufhören?</p>
<p>Wieso müssen sich die beiden Klassen aggregieren? Das ist ein fragwürdiger Ansatz. Zeiger helfen hier schon eher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734732</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 29 Jun 2009 20:03:00 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu Klassen. on Mon, 29 Jun 2009 20:10:14 GMT]]></title><description><![CDATA[<p>Beginner123 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class CD;

class AB
{
  private:
    CD test2; // error C2079: 'AB::test2' uses undefined class 'CD'
    // ....
};

class CD
{
  private:
    AB test1;
    // ...
};
</code></pre>
</blockquote>
<p>Ein AB hat also ein CD als Mitglied, welches ein AB als Mitglied hat, welches ein CD als Mitglied hat, welches ain AB u.s.w. Deine Objekte wären also unendlich groß.</p>
<p>Der Compiler meckert, weil Du eine Klasse AB mit einem Element eines nicht-vollständigen Typs CD definierst. Denn wir wissen noch nicht, was was und wie groß CD ist. Der Compiler kann sich dann auch kein Layout für Objekte der Klasse AB überlegen. Deswegen sind nicht-vollständige Typen als Elemente einer Klasse nicht erlaubt.</p>
<p>Du kannst aber stattdessen (wenn es unbedingt sein muss) einen Zeiger als Element benutzen. Zeiger auf unvollständige Typen sind in Ordnung. Das ist dann aber mit Vorsicht zu genießen.</p>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734738</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Mon, 29 Jun 2009 20:10:14 GMT</pubDate></item></channel></rss>