<?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[Zugriff von Klasse auf Klasse die von sich erbt?!]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes dringendes Problem:</p>
<p>Ich habe eine Klasse &quot;Node&quot;</p>
<p>class Node {<br />
.<br />
.<br />
.<br />
}</p>
<p>und eine Klasse &quot;Leaf&quot;<br />
#include &quot;Node.h&quot;<br />
class Leaf {<br />
.<br />
.<br />
.<br />
}</p>
<p>jetzt habe ich in der Node eine Funktion in der ich einen Node-Pointer auf einen Leaf-Pointer wechseln kann.</p>
<p>Leaf* lptr = reinterpret_cast&lt;Leaf*&gt; (ptr);</p>
<p>Dies funktioniert außerhalb vom Node perfekt. In der Node-Klasse behauptet er das er Leaf nicht kennt und nichts damit anzufangen weiß.. wenn ich in der Node jedoch &quot;include &quot;leaf.h&quot; mache.. bekomm ich tausend fehler, ich denke das ich nichts includen kann das von mir selbst erbt oder? Hat da jemand eine Lösung!<br />
Wäre Prima!</p>
<p>VIELEN DANK!<br />
Mit freundlichen Grüße<br />
najjannaj</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/228924/zugriff-von-klasse-auf-klasse-die-von-sich-erbt</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 14:35:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228924.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Dec 2008 15:34:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zugriff von Klasse auf Klasse die von sich erbt?! on Thu, 04 Dec 2008 15:34:32 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes dringendes Problem:</p>
<p>Ich habe eine Klasse &quot;Node&quot;</p>
<p>class Node {<br />
.<br />
.<br />
.<br />
}</p>
<p>und eine Klasse &quot;Leaf&quot;<br />
#include &quot;Node.h&quot;<br />
class Leaf {<br />
.<br />
.<br />
.<br />
}</p>
<p>jetzt habe ich in der Node eine Funktion in der ich einen Node-Pointer auf einen Leaf-Pointer wechseln kann.</p>
<p>Leaf* lptr = reinterpret_cast&lt;Leaf*&gt; (ptr);</p>
<p>Dies funktioniert außerhalb vom Node perfekt. In der Node-Klasse behauptet er das er Leaf nicht kennt und nichts damit anzufangen weiß.. wenn ich in der Node jedoch &quot;include &quot;leaf.h&quot; mache.. bekomm ich tausend fehler, ich denke das ich nichts includen kann das von mir selbst erbt oder? Hat da jemand eine Lösung!<br />
Wäre Prima!</p>
<p>VIELEN DANK!<br />
Mit freundlichen Grüße<br />
najjannaj</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625506</guid><dc:creator><![CDATA[najjannaj]]></dc:creator><pubDate>Thu, 04 Dec 2008 15:34:32 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff von Klasse auf Klasse die von sich erbt?! on Thu, 04 Dec 2008 15:39:30 GMT]]></title><description><![CDATA[<p>Such mal nach &quot;Zirkuläre Abhängigkeit&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625507</guid><dc:creator><![CDATA[Kuldren]]></dc:creator><pubDate>Thu, 04 Dec 2008 15:39:30 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff von Klasse auf Klasse die von sich erbt?! on Thu, 04 Dec 2008 17:00:48 GMT]]></title><description><![CDATA[<p>Danke, wenn man weiß wie sein Problem heißt lässt sich doch leichter eine Lösung finden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625545</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625545</guid><dc:creator><![CDATA[najjannaj]]></dc:creator><pubDate>Thu, 04 Dec 2008 17:00:48 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff von Klasse auf Klasse die von sich erbt?! on Thu, 04 Dec 2008 17:34:53 GMT]]></title><description><![CDATA[<p>reinterpret_cast ist an der Stelle Blödsinn, static_cast wäre angebracht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625565</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 04 Dec 2008 17:34:53 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff von Klasse auf Klasse die von sich erbt?! on Thu, 04 Dec 2008 20:14:17 GMT]]></title><description><![CDATA[<p>najjannaj schrieb:</p>
<blockquote>
<p>ich habe folgendes dringendes Problem:</p>
</blockquote>
<p>Wobei ich hier ohnehin von einigen Designfehlern ausgehe.</p>
<p>1. Includeguards verwenden</p>
<pre><code class="language-cpp">// a.h
#ifndef A_HEADER
#define A_HEADER
//      &lt;------&gt; Includeguard, muss eindeutig pro Header benannt werden.

class A
{
    public:
        void foo(); // Verwende ich im Schritt 3
};

#endif
</code></pre>
<p>2. Verwende den Header soweit möglich nur zur Deklaration, das erleichtert dir den 3. Schritt</p>
<p>3. Zirkuläre Abhängigkeiten sind aufzulösen<br />
Du darfst keine zirkulären Abhängigkeiten in Headern haben. Ein gegenseitiges Includieren von Headern ist nicht möglich. Was möglich ist, ist das man Includes durch Vorwärtsdeklarationen (Geht für Zeigertypen und Referenzen) in die Sourcedatei verlagert.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">// b.h
#ifndef B_HEADER
#define B_HEADER

class A; // Vorwärtsdeklaration

class B
{
    public:
        // Folgendes ist möglich, da für Referenzen/Zeiger kein vollständiger
        // Typ bekannt sein muß. Erst für den Zugriff (hier z.B. value.foo()) 
        void foo(A const &amp; value);
};

#endif
</code></pre>
<pre><code class="language-cpp">// b.cpp
#include &quot;b.h&quot;
#include &quot;a.h&quot; // Da ein Zugriff erfolgt, muss nun der Header bekannt sein

void B::foo(A const &amp; value)
{
    value.foo();
}
</code></pre>
<p>4. Casten von Inkompatiblen Typen<br />
Ich hoffe du bist dir wirklich bewusst was passiert wenn du zwei inkompatible Typen ineinander umwandelst? Sind die Speicherlayouts beider Klassen wirklich kompatibel? Liegen die Elemente an gleicher Stelle?</p>
<p>Ich glaube du solltest dir eher mal Vererbung (inklusive virtuellen Funktionen) und dynamic_cast anschauen.</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625653</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 04 Dec 2008 20:14:17 GMT</pubDate></item><item><title><![CDATA[Reply to Zugriff von Klasse auf Klasse die von sich erbt?! on Thu, 04 Dec 2008 23:42:36 GMT]]></title><description><![CDATA[<p>Huch!<br />
Ich bin einfach davon ausgegangen dass hier bei &quot;Leaf&quot; ein &quot;: public Node&quot; fehlte <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Wenn nicht ... ist es sowieso quatsch wie asc ja gerade schon geschrieben hat!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1625723</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1625723</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 04 Dec 2008 23:42:36 GMT</pubDate></item></channel></rss>