<?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[Vorwärtsdeklaration bei Vererbung]]></title><description><![CDATA[<p>Hallo,<br />
ich arbeite mit C++ noch nicht so lange. Am Anfang wurde mir aber gesagt, man soll #includes mit relativen Pfaden am besten nicht in der Header-Datei machen, um später keine Linker-Probleme zu bekommen wenn die Klasse von irgend wo anders eingebunden wird. Besser ist es, wenn man ein Vorwärts-Deklaration macht (in Header nur</p>
<pre><code class="language-cpp">class includeKlasse;
</code></pre>
<p>angeben) und anschließend in der cpp den richtigen include.</p>
<p>Das versuche ich auch stets zu beachten. Nun habe ich aber eine Klasse von der ich ableiten will.<br />
also:</p>
<pre><code class="language-cpp">class Klassenmane : public abgeleiteteKlasse
{
...
}
</code></pre>
<p>Damit dies geht muss ich die &quot;abgeleiteteKlasse&quot; vorher includieren. Sie liegt auch in einem ganz anderen Ordner.<br />
Eine Vorwärts-Deklaration funktioniert hier nicht, da sonst der Fehler C2504 kommt: Basisklasse undefiniert.</p>
<p>Wie mache ich es hier, damit es für die Zukunft sicher ist, wenn wer meine Klasse von wo anders nutzen will?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/284806/vorwärtsdeklaration-bei-vererbung</link><generator>RSS for Node</generator><lastBuildDate>Sun, 05 Apr 2026 11:35:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/284806.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 08 Apr 2011 13:24:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vorwärtsdeklaration bei Vererbung on Fri, 08 Apr 2011 13:24:19 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich arbeite mit C++ noch nicht so lange. Am Anfang wurde mir aber gesagt, man soll #includes mit relativen Pfaden am besten nicht in der Header-Datei machen, um später keine Linker-Probleme zu bekommen wenn die Klasse von irgend wo anders eingebunden wird. Besser ist es, wenn man ein Vorwärts-Deklaration macht (in Header nur</p>
<pre><code class="language-cpp">class includeKlasse;
</code></pre>
<p>angeben) und anschließend in der cpp den richtigen include.</p>
<p>Das versuche ich auch stets zu beachten. Nun habe ich aber eine Klasse von der ich ableiten will.<br />
also:</p>
<pre><code class="language-cpp">class Klassenmane : public abgeleiteteKlasse
{
...
}
</code></pre>
<p>Damit dies geht muss ich die &quot;abgeleiteteKlasse&quot; vorher includieren. Sie liegt auch in einem ganz anderen Ordner.<br />
Eine Vorwärts-Deklaration funktioniert hier nicht, da sonst der Fehler C2504 kommt: Basisklasse undefiniert.</p>
<p>Wie mache ich es hier, damit es für die Zukunft sicher ist, wenn wer meine Klasse von wo anders nutzen will?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046385</guid><dc:creator><![CDATA[Xenya]]></dc:creator><pubDate>Fri, 08 Apr 2011 13:24:19 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration bei Vererbung on Fri, 08 Apr 2011 13:29:35 GMT]]></title><description><![CDATA[<p>Zur Vererbung muss die Klasse komplett bekannt sein, weil die Klassendefinition ja sonst unvollständig wäre (was da reinkommt, ist ja dann nicht bekannt!). D.h. Du musst inkludieren. Daran sieht man auch, dass Vererbung stärker bindet als Komposition und man im Zweifelsfall daher eher Letzteres verwenden sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046388</guid><dc:creator><![CDATA[Eisflamme]]></dc:creator><pubDate>Fri, 08 Apr 2011 13:29:35 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration bei Vererbung on Fri, 08 Apr 2011 13:31:54 GMT]]></title><description><![CDATA[<p>Hallo Xenya,</p>
<p>in diesem Fall benötigst du den include im Header.</p>
<p>Ich vermute du möchtest etwas haben wie include guards, damit du kein<br />
Problem mit Doppeldeklarationene hast.</p>
<p>Etwa so:</p>
<pre><code class="language-cpp">#ifndef MY_NAMESPACE_MY_CLASS_H
#define MY_NAMESPACE_MY_CLASS_H
class MyBaseClass{
// ...
};

#endif
</code></pre>
<p>Probleme kriegst du nur, wenn du die Klasse (wenn sie kein Template ist) im Header implementierst.</p>
<p>Gruß,<br />
XSpille</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046392</guid><dc:creator><![CDATA[XSpille]]></dc:creator><pubDate>Fri, 08 Apr 2011 13:31:54 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration bei Vererbung on Fri, 08 Apr 2011 13:33:27 GMT]]></title><description><![CDATA[<p>Du musst auf jeden Fall das Include reinmachen. die Warnung die du wegen der Pfade bekommen hast, halte ich für übertrieben paranoid. Du wirst doch wohl wissen, in welchen Pfaden deine Dateien liegen.</p>
<p>Falls du die Header projektintern benutzt, dann schreibst du<br />
<code>#include &quot;relativer/pfad/vom/hauptverzeichnis/deines/projekts/foo.h&quot;</code></p>
<p>Falls du eine Bibliothek schreiben möchtest, dann schreibst du<br />
<code>#include &lt;relativer/pfad/vom/includeverzeichnis/foo.h&gt;</code></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046393</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046393</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 08 Apr 2011 13:33:27 GMT</pubDate></item><item><title><![CDATA[Reply to Vorwärtsdeklaration bei Vererbung on Fri, 08 Apr 2011 13:54:05 GMT]]></title><description><![CDATA[<p>vielen lieben Dank für die Antworten.</p>
<p>da es eine Bibliothek wird werde ich es mit &lt;&gt; machen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2046402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2046402</guid><dc:creator><![CDATA[Xenya]]></dc:creator><pubDate>Fri, 08 Apr 2011 13:54:05 GMT</pubDate></item></channel></rss>