<?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[Fehlermeldung, Ableiten, verschiedene Headerfiles]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe in einem Headerfile &quot;BD.h&quot; die Klassen B und D definiert</p>
<pre><code class="language-cpp">class B { };
class D : public B { };
</code></pre>
<p>und in einem anderen Headerfile &quot;C.h&quot; die Klasse C</p>
<pre><code class="language-cpp">#include &quot;BD.h&quot;

class B;
class D;

class C 
{
	B* f() { D* d; return d; }
};
</code></pre>
<p>Wenn ich das versuche zu kompilieren erhalte ich, die Fehlermeldung</p>
<blockquote>
<p>cannot convert ‘D*’ to ‘B*’ in return</p>
</blockquote>
<p>bezüglich der Zeile</p>
<pre><code class="language-cpp">B* f() { D* d; return d; }
</code></pre>
<p>Wenn ich alles in ein Headerfile packe</p>
<pre><code class="language-cpp">class B { };
class D : public B { };

class C 
{
	B* f() { D* d; return d; }
};
</code></pre>
<p>erhalte ich keine Fehlermeldung.</p>
<p>Weiss irgendjemand, was hier passiert?</p>
<p>Es sei darauf hingewiesen, dass dieser Code Teil eines größeren Projektes ist (allerdings wäre mir schleierhaft, wie der Rest des Codes Einfluss auf den Fehler haben sollte)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/224981/fehlermeldung-ableiten-verschiedene-headerfiles</link><generator>RSS for Node</generator><lastBuildDate>Fri, 02 Oct 2026 00:43:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/224981.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 17 Oct 2008 15:58:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehlermeldung, Ableiten, verschiedene Headerfiles on Fri, 17 Oct 2008 15:58:37 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe in einem Headerfile &quot;BD.h&quot; die Klassen B und D definiert</p>
<pre><code class="language-cpp">class B { };
class D : public B { };
</code></pre>
<p>und in einem anderen Headerfile &quot;C.h&quot; die Klasse C</p>
<pre><code class="language-cpp">#include &quot;BD.h&quot;

class B;
class D;

class C 
{
	B* f() { D* d; return d; }
};
</code></pre>
<p>Wenn ich das versuche zu kompilieren erhalte ich, die Fehlermeldung</p>
<blockquote>
<p>cannot convert ‘D*’ to ‘B*’ in return</p>
</blockquote>
<p>bezüglich der Zeile</p>
<pre><code class="language-cpp">B* f() { D* d; return d; }
</code></pre>
<p>Wenn ich alles in ein Headerfile packe</p>
<pre><code class="language-cpp">class B { };
class D : public B { };

class C 
{
	B* f() { D* d; return d; }
};
</code></pre>
<p>erhalte ich keine Fehlermeldung.</p>
<p>Weiss irgendjemand, was hier passiert?</p>
<p>Es sei darauf hingewiesen, dass dieser Code Teil eines größeren Projektes ist (allerdings wäre mir schleierhaft, wie der Rest des Codes Einfluss auf den Fehler haben sollte)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600506</guid><dc:creator><![CDATA[ingobulla]]></dc:creator><pubDate>Fri, 17 Oct 2008 15:58:37 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung, Ableiten, verschiedene Headerfiles on Fri, 17 Oct 2008 16:04:22 GMT]]></title><description><![CDATA[<p>hast du den include wirklich vorher schon drin oder nur die Forward-Deklaration?<br />
nimm die Forward-decl mal raus, die ist unnötig weil du B und D durch den eingebundenen Header schon bekannt machst.<br />
Falls dann ne andere Fehlermeldung kommt von wegen B oder D nicht bekannt, dann bindest du den falschen header ein... Keine Ahnung wie sicher du dir bist ob das auch WIRKLICH der richtige Header mit den beiden klassendefinitionen ist den du da einbindest...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600513</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600513</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 17 Oct 2008 16:04:22 GMT</pubDate></item><item><title><![CDATA[Reply to Fehlermeldung, Ableiten, verschiedene Headerfiles on Fri, 17 Oct 2008 16:07:03 GMT]]></title><description><![CDATA[<p>ingobulla schrieb:</p>
<blockquote>
<p>und in einem anderen Headerfile &quot;C.h&quot; die Klasse C</p>
<pre><code class="language-cpp">#include &quot;BD.h&quot;

class B;
class D;

class C 
{
	B* f() { D* d; return d; }
};
</code></pre>
</blockquote>
<p>Wie wäre es mit einer sauberen Header/Source-Trennung? Vorwarddeklarationen bitte auch nur verwenden, wenn du die Klassen nicht inkludierst.</p>
<p>Zudem gibst du eine uninitialisierte Variable zurück</p>
<p>Besser:</p>
<pre><code class="language-cpp">// C.h
#ifndef C_HEADER
#define C_HEADER

class B;

class C 
{
    public:
        B* f();
};

#endif
</code></pre>
<pre><code class="language-cpp">// C.cpp
#include &quot;BC.h&quot;

B* C::f()
{
    D* d = new D();
    return d;
}
</code></pre>
<p>Ich bin kein Fan von getrennten new/delete aber ich habe dein Beispiel einfach mal übernommen und mit einem initialisierten d gearbeitet.</p>
<p>ingobulla schrieb:</p>
<blockquote>
<p>Weiss irgendjemand, was hier passiert?</p>
</blockquote>
<p>Ja, die Vorwarddeklarationen enthalten keine informationen zur Vererbungshirachie, daher könnten sie hier ein Problem darstellen. Ganz von der fehlenden Header/Source Trennung mal abgesehen.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1600515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1600515</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Fri, 17 Oct 2008 16:07:03 GMT</pubDate></item></channel></rss>