<?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[abstrakte Methode mit Implementierung in Header-Datei?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe eine abstrakte Methode, die aber eine Implementierung besitzt. Also:</p>
<pre><code>//Header
struct Test {
    virtual void foo() =0;
};
</code></pre>
<pre><code>//Impl
Test::foo() {}
</code></pre>
<p>Hintergrund ist, das alle abgeleiteten Klassen problemlos &quot;parent&quot;-&gt;foo() aufrufen können sollen.</p>
<p>Nun möchte ich aus dieser Klasse eine Header-Only Datei machen. Allerdings compiliert folgendes nicht:</p>
<pre><code>struct Test {
    virtual void foo() =0 {};
};
</code></pre>
<p>Wie ist die Syntax dafür? Oder geht das nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/324017/abstrakte-methode-mit-implementierung-in-header-datei</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Jul 2026 02:51:06 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/324017.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 27 Feb 2014 01:32:47 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to abstrakte Methode mit Implementierung in Header-Datei? on Thu, 27 Feb 2014 01:32:47 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe eine abstrakte Methode, die aber eine Implementierung besitzt. Also:</p>
<pre><code>//Header
struct Test {
    virtual void foo() =0;
};
</code></pre>
<pre><code>//Impl
Test::foo() {}
</code></pre>
<p>Hintergrund ist, das alle abgeleiteten Klassen problemlos &quot;parent&quot;-&gt;foo() aufrufen können sollen.</p>
<p>Nun möchte ich aus dieser Klasse eine Header-Only Datei machen. Allerdings compiliert folgendes nicht:</p>
<pre><code>struct Test {
    virtual void foo() =0 {};
};
</code></pre>
<p>Wie ist die Syntax dafür? Oder geht das nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2385471</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2385471</guid><dc:creator><![CDATA[HeaderOnly]]></dc:creator><pubDate>Thu, 27 Feb 2014 01:32:47 GMT</pubDate></item><item><title><![CDATA[Reply to abstrakte Methode mit Implementierung in Header-Datei? on Thu, 27 Feb 2014 02:11:49 GMT]]></title><description><![CDATA[<p>Lass die geschweiften Klammern weg, das ist ja gerade eine Definition.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2385472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2385472</guid><dc:creator><![CDATA[kingcools]]></dc:creator><pubDate>Thu, 27 Feb 2014 02:11:49 GMT</pubDate></item><item><title><![CDATA[Reply to abstrakte Methode mit Implementierung in Header-Datei? on Thu, 27 Feb 2014 07:45:28 GMT]]></title><description><![CDATA[<p>Man hatte jetzt ja die Compilermeldung posten können, aber das wär ja zu viel arbeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2385481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2385481</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Thu, 27 Feb 2014 07:45:28 GMT</pubDate></item><item><title><![CDATA[Reply to abstrakte Methode mit Implementierung in Header-Datei? on Thu, 27 Feb 2014 07:53:30 GMT]]></title><description><![CDATA[<p>HeaderOnly schrieb:</p>
<blockquote>
<p>Wie ist die Syntax dafür? Oder geht das nicht?</p>
</blockquote>
<p>Das steht in der Tat so in alten Büchern. Ja, die Compiler nahmen es an. Aber heute nicht mehr. (AFAIR war die ~AWOF(){} im ersten ecp noch in der Klasse, was ich übrigens klasse fand, keine Ahnung, was das soll, daß es jetzt nicht mehr geht.)</p>
<p>Kannste die Implemetierung nach der Klasse erst anbieten, aber noch im Header als inline-Funktion?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2385482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2385482</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 27 Feb 2014 07:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to abstrakte Methode mit Implementierung in Header-Datei? on Thu, 27 Feb 2014 08:02:21 GMT]]></title><description><![CDATA[<p>kingcools schrieb:</p>
<blockquote>
<p>Lass die geschweiften Klammern weg, das ist ja gerade eine Definition.</p>
</blockquote>
<p>Er braucht die (übrigens allervermutlichst nichtleere, sonst machts ja keinen Sinn) Definition für</p>
<pre><code>class SptFrFlgzg:public Test{
   void foo(){
      //Och, meine SptFr40 hat keine Specialithäten, darf die 
      //Default-Implementierung nehmen. VOH, 27.2.14
      return Test::foo();
   }
};
</code></pre>
<p>An sich kein schlechter Ort, um eine Default-Implementierung unterzubringen. Aber bin mir nicht so sicher, ob die Kollegen dem folgen können und wollen, daß eine implementierte pur virtuelle Funktion logischerweise die Default-Implementierung für die Erben ist. Man könnte auch konservativ eine defaultFoo() anbieten, wäre allen Ärger los, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2385485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2385485</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 27 Feb 2014 08:02:21 GMT</pubDate></item><item><title><![CDATA[Reply to abstrakte Methode mit Implementierung in Header-Datei? on Thu, 27 Feb 2014 11:43:28 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Kannste die Implemetierung nach der Klasse erst anbieten, aber noch im Header als inline-Funktion?</p>
</blockquote>
<p>Ah, ja. Das geht natürlich auch noch. Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2385551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2385551</guid><dc:creator><![CDATA[HeaderOnly]]></dc:creator><pubDate>Thu, 27 Feb 2014 11:43:28 GMT</pubDate></item></channel></rss>