<?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[Fragen zu abgeleiteten Klassen]]></title><description><![CDATA[<p>Hi</p>
<p>Ich habe eine Basisklasse von dieser mehrere andere Klassen abgeleitet (sagen wir SubKlasse1-3). Diese Subklassen haben jetzt alle eine Funktion die die Basisklasse nicht hat.</p>
<p>Jetzt habe ich ein Array:</p>
<p>Basisklasse test_array[3];</p>
<p>test_array[0]=SubKlasse1;<br />
test_array[1]=SubKlasse2;<br />
test_array[2]=SubKlasse3;</p>
<p>Wie rufe ich jetzt über das Array die Funktion der Subklasse auf, die die Basisklasse noch nicht hat? (Die Basisklasse darf nicht abstrakt werden)</p>
<p>Kann mir da wer weiterhelfen?</p>
<p>MfG</p>
<p>Faultier</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/232536/fragen-zu-abgeleiteten-klassen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 08:59:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/232536.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Jan 2009 20:32:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fragen zu abgeleiteten Klassen on Fri, 23 Jan 2009 20:32:04 GMT]]></title><description><![CDATA[<p>Hi</p>
<p>Ich habe eine Basisklasse von dieser mehrere andere Klassen abgeleitet (sagen wir SubKlasse1-3). Diese Subklassen haben jetzt alle eine Funktion die die Basisklasse nicht hat.</p>
<p>Jetzt habe ich ein Array:</p>
<p>Basisklasse test_array[3];</p>
<p>test_array[0]=SubKlasse1;<br />
test_array[1]=SubKlasse2;<br />
test_array[2]=SubKlasse3;</p>
<p>Wie rufe ich jetzt über das Array die Funktion der Subklasse auf, die die Basisklasse noch nicht hat? (Die Basisklasse darf nicht abstrakt werden)</p>
<p>Kann mir da wer weiterhelfen?</p>
<p>MfG</p>
<p>Faultier</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1651158</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651158</guid><dc:creator><![CDATA[Faultier]]></dc:creator><pubDate>Fri, 23 Jan 2009 20:32:04 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu abgeleiteten Klassen on Fri, 23 Jan 2009 20:39:48 GMT]]></title><description><![CDATA[<p>So, wie du das gezeigt hast, geht das nicht.</p>
<p>Das Verhalten nennt sich (Laufzeit-)Polymorphie und funktioniert nur mit Zeigern oder Referenzen. Damit man in den abgeleiteten Klassen eine Funktion aufrufen kann, wenn man nur Zeiger oder Referenzen vom Typ einer Basisklasse hat, muss man die Funktionen virtuell machen.</p>
<pre><code class="language-cpp">class Base
{
    public:
        virtual void Foo() = 0; // rein virtuell
};

class Derived1 : public Base
{
    public:
        virtual void Foo()
        {
            std::cout &lt;&lt; &quot;Derived1&quot; &lt;&lt; std::endl;
        }
};

class Derived2 : public Base
{
    public:
        virtual void Foo()
        {
            std::cout &lt;&lt; &quot;Derived2&quot; &lt;&lt; std::endl;
        }
};
</code></pre>
<pre><code class="language-cpp">Base* Array[3] = {new Derived1, new Derived2, new Derived1};
Array[0]-&gt;Foo();
Array[1]-&gt;Foo();
Array[2]-&gt;Foo();
</code></pre>
<p>Hier wird dann automatisch die richtige Funktion aufgerufen ( <code>delete</code> s nachher nicht vergessen...).</p>
<p>So hast du die Basisklasse aber abstrakt, weil dort eine rein virtuelle (nicht definierte) Funktion vorkommt. Ansonsten musst du die Funktion implementieren - aber wieso willst du keine abstrakte Basisklasse, wenn du sowieso nur auf Instanzen der abgeleiteten Klassen zugreifst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1651160</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651160</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 23 Jan 2009 20:39:48 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu abgeleiteten Klassen on Fri, 23 Jan 2009 20:53:19 GMT]]></title><description><![CDATA[<p>Die Basisklasse wird an anderer Stelle noch Instantiiert. Und das &quot;an anderer Stelle&quot; ist nicht mein Code. Da will ich meinen Kollegen jetzt nicht ins Handwerk pfuschen...</p>
<p>Kann man das ganze auch irgendwie mit umcasten regeln?</p>
<p>MfG</p>
<p>Faultier</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1651171</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651171</guid><dc:creator><![CDATA[Faultier]]></dc:creator><pubDate>Fri, 23 Jan 2009 20:53:19 GMT</pubDate></item><item><title><![CDATA[Reply to Fragen zu abgeleiteten Klassen on Fri, 23 Jan 2009 23:26:33 GMT]]></title><description><![CDATA[<p>Implementier doch einfach die Funktion in der Basisklasse, meinetwegen als nichts-tuende Funktion.</p>
<p>Ja, es gäbe noch <code>dynamic_cast</code> , aber das ist eher unschön, da du Fälle unterscheiden oder alle abgeleiteten Klassen durchprobieren musst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1651220</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1651220</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 23 Jan 2009 23:26:33 GMT</pubDate></item></channel></rss>