<?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[C++ Headder Frage]]></title><description><![CDATA[<p>Hallo ich hätte mal eine Frage,<br />
ich habe wei Klassen KlasseA und KlasseB</p>
<p>im Headder der KlasseB steht<br />
#ifndef KlasseB_H<br />
#define KlasseB_H<br />
class KlasseA;</p>
<p>heist class KlasseA = Das die Funktionen von KlasseA auch in B zur Verfügung stehen?<br />
als ob man anstelle von class KlasseA;<br />
#include &lt;KlasseA&gt; hätte schreiben können?</p>
<p>Vielen Dank für die Erklärung im Vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/170507/c-headder-frage</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 02:45:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/170507.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 16 Jan 2007 19:57:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ Headder Frage on Tue, 16 Jan 2007 19:57:47 GMT]]></title><description><![CDATA[<p>Hallo ich hätte mal eine Frage,<br />
ich habe wei Klassen KlasseA und KlasseB</p>
<p>im Headder der KlasseB steht<br />
#ifndef KlasseB_H<br />
#define KlasseB_H<br />
class KlasseA;</p>
<p>heist class KlasseA = Das die Funktionen von KlasseA auch in B zur Verfügung stehen?<br />
als ob man anstelle von class KlasseA;<br />
#include &lt;KlasseA&gt; hätte schreiben können?</p>
<p>Vielen Dank für die Erklärung im Vorraus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1210999</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1210999</guid><dc:creator><![CDATA[Arthur21]]></dc:creator><pubDate>Tue, 16 Jan 2007 19:57:47 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Headder Frage on Tue, 16 Jan 2007 20:09:53 GMT]]></title><description><![CDATA[<p>Arthur21 schrieb:</p>
<blockquote>
<p>im Headder der KlasseB steht<br />
#ifndef KlasseB_H<br />
#define KlasseB_H<br />
class KlasseA;</p>
<p>heist class KlasseA = Das die Funktionen von KlasseA auch in B zur Verfügung stehen?</p>
</blockquote>
<p>Das ist eine so genannte forward-Deklaration. Das sagt dem Compiler, dass es eine KlasseA gibt. Näher kennen tut er sie zu dem Zeitpunkt aber noch nicht.</p>
<blockquote>
<p>als ob man anstelle von class KlasseA;<br />
#include &lt;KlasseA&gt; hätte schreiben können?</p>
</blockquote>
<p>Wenn man kann, dann hätte man dies schreiben sollen. Allerdings gibt's gelegentlich so Situationen, dass man zwei Klassen hat und die sich gegenseitig &quot;brauchen&quot; und dann kommt man um eine forward-Deklaration nicht herum. Weil include setzt ja ein und diese zirkuläre Abhängigkeit ist etwas ungeschickt^^</p>
<p>MfG</p>
<p>GPC</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211008</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211008</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Tue, 16 Jan 2007 20:09:53 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Headder Frage on Tue, 16 Jan 2007 20:17:49 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Also hat mann mit class KlasseA;<br />
in KlasseB alle Funktionen der KlasseA zur Verfügung ?</p>
<p>Mich wurdert dann nur das ich ohne die Include Anweisung<br />
keine Objekte der KlasseA in B anlegen kann.</p>
<p>Fehlermeldung: : error C2512: 'KlasseA': Kein geeigneter Standardkonstruktor verfügbar</p>
<p>mit include Anweisung in KlasseB</p>
<p>include &quot;KlasseA&quot; funktioniert es aber ?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211012</guid><dc:creator><![CDATA[Arthur21]]></dc:creator><pubDate>Tue, 16 Jan 2007 20:17:49 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Headder Frage on Tue, 16 Jan 2007 23:53:46 GMT]]></title><description><![CDATA[<p>Die KlasseB muß in KlasseA als friend definiert werden, damit du alle Eigenschaften der KlasseA in KlasseB nutzen kannst. Damit erhältst du Lese und Schreibzugriff.</p>
<p>BSP:</p>
<pre><code class="language-cpp">class KlasseA : Objekt;
{
public:
...;
private:
...;
protected:
...;
friend KlasseB;
}
</code></pre>
<p>Ist hoffentlich richtig...bin selbst nur Newbie <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211059</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211059</guid><dc:creator><![CDATA[Zero_Cool]]></dc:creator><pubDate>Tue, 16 Jan 2007 23:53:46 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Headder Frage on Wed, 17 Jan 2007 06:34:15 GMT]]></title><description><![CDATA[<p>Ich denk die Frage war anders gemeint.</p>
<p>Nur mit der Forward deklaration weiss KlasseB ja noch nicht was sie mti KlasseA anfangen soll (ist ja kein Klassenrumpf da) Sie weiss nur dass es sie irgendwo gibt.</p>
<p>Wie das ueblicherweuise geloest wird weiss ich net, ICH (als Anfaenegr) haette, da dann jetzt KlasseB.h in KlasseA.h inkludiert und dann ueberall wo ich die beiden Klassen brauche entweder beide Header oder nur KlasseA.h inkludiert. Inwieweit das korrekt ist weiss ich nicht, wartest besser noch auf eine professionellere ANtwort.</p>
<p>EDIT: irgendwie muesste es ja auch gehen wenn man dann in KlasseB.h HINTER die Definition von KlasseB KlasseA.h inkludiert. Denke aber nicht, dass das so ueblich ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211081</guid><dc:creator><![CDATA[Shinja]]></dc:creator><pubDate>Wed, 17 Jan 2007 06:34:15 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Headder Frage on Wed, 17 Jan 2007 07:10:43 GMT]]></title><description><![CDATA[<p>Wenn du nur die Abhängigkeit in einer Richtung hast, ist das <code>#include &quot;KlasseA.h&quot;</code> schon der richtige Ansatz. Aber bei gegenseitigen Abhängigkeiten klappt das nicht mehr (#include ist eine simple Textersetzung, also würde dieser gegenseitige Include entweder zu einer Endlos-Rekursion oder zu massig &quot;unknown identifier&quot; Fehlern führen), deshalb die Forward-Deklaration.</p>
<p>Mit dieser Forward-Deklaration weiß der Compiler, daß es die Klasse 'KlasseA' gibt - das heißt, du kannst sie nutzen, solange du nichts über ihre Größe und Struktur wissen mußt (z.B. kannst du an dieser Stelle Zeiger und Referenzen darauf anlegen, aber keine Variablen von dem Typ - dazu benötigst du die komplette Definition). Deshalb mußt du üblicherweise weiter unten im Programm (z.B. in der 'KlasseB.cpp') doch noch den Header einbinden, bevor du die Methoden der Klasse nutzen kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1211103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1211103</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 17 Jan 2007 07:10:43 GMT</pubDate></item></channel></rss>