<?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[funktionsdefinition in abgeleiteter Klasse erzwingen..]]></title><description><![CDATA[<p>Hi Leuts, folgendes Problem:<br />
Ich habe eine Basisklasse A von der ich verschiedene andere Klassen (B, C, und D) ableite. Die Basisklasse wird als Objekt niemals auftauchen.<br />
Es handelt sich dabei um Messgeräte, die über eine serielle Schnittstelle mit meiner Software kommunizieren. Alle Geräte können so ziemlich das gleiche, aber sie haben andere Kommandostrings. Deshalb habe ich diese Struktur aufgebaut. Nun gibts ein paar Befehle, die auf verschiedenen Geräten aber doch identisch sind. Die definiere ich dann in der Basisklasse, und brauch mich bei bestimmten abgeleiteten Klassen also nicht mehr darum zu kümmern, die Funktion zu implementieren. Diese Funktionen habe ich also virtuell gemacht, funktioniert auch soweit.<br />
Nun möchte ich aber erzwingen, dass eine bestimmte Funktion in JEDER Klasse definiert wird (Funktion A). Wie mache ich das ?<br />
Mein erster Versuch war folgender: Ich habe im Headerfile der Basisklasse eine weitere Funktion virtuell deklariert. Nun meckert aber der Compiler schon dass die Funktion nicht definiert wurde. Wenn ich sie aber definiere und dann vergesse sie in der abgeleiteten Klasse zu überschreiben, dann wird ja die Definition der Basisklasse aufgerufen. Das will ich aber nicht!<br />
Wie geht man da vor ?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/261530/funktionsdefinition-in-abgeleiteter-klasse-erzwingen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 07 Sep 2026 05:33:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/261530.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 Feb 2010 18:14:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to funktionsdefinition in abgeleiteter Klasse erzwingen.. on Fri, 19 Feb 2010 18:14:40 GMT]]></title><description><![CDATA[<p>Hi Leuts, folgendes Problem:<br />
Ich habe eine Basisklasse A von der ich verschiedene andere Klassen (B, C, und D) ableite. Die Basisklasse wird als Objekt niemals auftauchen.<br />
Es handelt sich dabei um Messgeräte, die über eine serielle Schnittstelle mit meiner Software kommunizieren. Alle Geräte können so ziemlich das gleiche, aber sie haben andere Kommandostrings. Deshalb habe ich diese Struktur aufgebaut. Nun gibts ein paar Befehle, die auf verschiedenen Geräten aber doch identisch sind. Die definiere ich dann in der Basisklasse, und brauch mich bei bestimmten abgeleiteten Klassen also nicht mehr darum zu kümmern, die Funktion zu implementieren. Diese Funktionen habe ich also virtuell gemacht, funktioniert auch soweit.<br />
Nun möchte ich aber erzwingen, dass eine bestimmte Funktion in JEDER Klasse definiert wird (Funktion A). Wie mache ich das ?<br />
Mein erster Versuch war folgender: Ich habe im Headerfile der Basisklasse eine weitere Funktion virtuell deklariert. Nun meckert aber der Compiler schon dass die Funktion nicht definiert wurde. Wenn ich sie aber definiere und dann vergesse sie in der abgeleiteten Klasse zu überschreiben, dann wird ja die Definition der Basisklasse aufgerufen. Das will ich aber nicht!<br />
Wie geht man da vor ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858344</guid><dc:creator><![CDATA[Thule]]></dc:creator><pubDate>Fri, 19 Feb 2010 18:14:40 GMT</pubDate></item><item><title><![CDATA[Reply to funktionsdefinition in abgeleiteter Klasse erzwingen.. on Fri, 19 Feb 2010 18:18:18 GMT]]></title><description><![CDATA[<p>Thule schrieb:</p>
<blockquote>
<p>Diese Funktionen habe ich also virtuell gemacht, funktioniert auch soweit.</p>
</blockquote>
<p>virtuell ist hier unnötig.</p>
<p>Thule schrieb:</p>
<blockquote>
<p>Wie geht man da vor ?</p>
</blockquote>
<p>Deklariere die Funktion rein virtuell. Eine rein virtuelle Funktion muss keine Definition besitzen, es sei denn, diese wird irgendwann mal Aufgerufen.</p>
<pre><code class="language-cpp">struct base
{
    virtual void foo() = 0;
};

struct derived1 : base {};
derived1 x; // Fehler, derived1 besitz eine rein virtuelle Funktion und ist daher abstrakt.

struct derived2 : base { void foo() {} };
derived2 y; // ok, foo wurde überschrieben
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1858345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858345</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Fri, 19 Feb 2010 18:18:18 GMT</pubDate></item><item><title><![CDATA[Reply to funktionsdefinition in abgeleiteter Klasse erzwingen.. on Fri, 19 Feb 2010 18:19:15 GMT]]></title><description><![CDATA[<p>Du machst am besten die Basisklasse abstrakt (kann nicht erzeugt werden).</p>
<pre><code class="language-cpp">struct base
{
 virtual void foo () { std::cout &lt;&lt; &quot;hmm&quot;; }
 virtual void bar () = 0; // muss implementiert werden
 virtual ~base (){} // virtueller destruktor ist wichtig
};

int main ()
{
 base b; // fehler
}
</code></pre>
<p>Das nächste mal auch bitte mit Beispielcode, denn dann versteht man besser, was du willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858346</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 19 Feb 2010 18:19:15 GMT</pubDate></item><item><title><![CDATA[Reply to funktionsdefinition in abgeleiteter Klasse erzwingen.. on Fri, 19 Feb 2010 18:27:04 GMT]]></title><description><![CDATA[<p>ja das ging aber flott;<br />
Ok, das &quot;=0&quot; hat bei mir gefehlt, Problem gelöst.<br />
1000Dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1858351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1858351</guid><dc:creator><![CDATA[Thule]]></dc:creator><pubDate>Fri, 19 Feb 2010 18:27:04 GMT</pubDate></item></channel></rss>