<?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[Implementieren einer rein virtuellen Funktion durch eine andere Basisklasse]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Interface und eine Basisklasse, welche einen Teil des Interfaces bereits implementiert. Nun möchte ich gerne in einer Kindklasse das Interface implementieren und dazu auch von der Basisklasse erben:</p>
<pre><code>class Interface
{
	public:
		virtual void func1()=0;
		virtual void func2()=0;
};

class Basisklasse
{
	public:
		void func1() {}
};

class Child:public Interface, public Basisklasse
{
	public:
		void func2() {}
};
</code></pre>
<p>Leider akzeptiert C++ das so nicht und behauptet, in Child sei die Funktion func1() rein virtuell. Das muss doch irgendwie gehen.</p>
<p>Die Basisklasse kann leider nicht vom Interface erben, da sie noch anderweitig verwendet wird.</p>
<p>Grüße,<br />
Heinzi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/267373/implementieren-einer-rein-virtuellen-funktion-durch-eine-andere-basisklasse</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 13:32:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267373.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 23 May 2010 13:52:40 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Implementieren einer rein virtuellen Funktion durch eine andere Basisklasse on Sun, 23 May 2010 13:52:40 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe ein Interface und eine Basisklasse, welche einen Teil des Interfaces bereits implementiert. Nun möchte ich gerne in einer Kindklasse das Interface implementieren und dazu auch von der Basisklasse erben:</p>
<pre><code>class Interface
{
	public:
		virtual void func1()=0;
		virtual void func2()=0;
};

class Basisklasse
{
	public:
		void func1() {}
};

class Child:public Interface, public Basisklasse
{
	public:
		void func2() {}
};
</code></pre>
<p>Leider akzeptiert C++ das so nicht und behauptet, in Child sei die Funktion func1() rein virtuell. Das muss doch irgendwie gehen.</p>
<p>Die Basisklasse kann leider nicht vom Interface erben, da sie noch anderweitig verwendet wird.</p>
<p>Grüße,<br />
Heinzi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1901517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1901517</guid><dc:creator><![CDATA[Iriq]]></dc:creator><pubDate>Sun, 23 May 2010 13:52:40 GMT</pubDate></item><item><title><![CDATA[Reply to Implementieren einer rein virtuellen Funktion durch eine andere Basisklasse on Sun, 23 May 2010 13:56:06 GMT]]></title><description><![CDATA[<p>Wenn die Basisklasse func1 redefinieren soll, muß sie auch vom Interface erben.</p>
<pre><code class="language-cpp">class Child:public Interface, public Basisklasse 
{ 
    public: 
        void func1() {
           Basisklasse::func1();
        }
        void func2() {} 
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1901519</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1901519</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 23 May 2010 13:56:06 GMT</pubDate></item><item><title><![CDATA[Reply to Implementieren einer rein virtuellen Funktion durch eine andere Basisklasse on Sun, 23 May 2010 13:59:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class Child : public Interface
{
public:
  void func2() {}
  void func1() { b.func1(); }

private:
  Basisklase b;

};

class Child2 : public Interface
{
public:
  void func2() {}
  void func1() { cout &lt;&lt; &quot;ätsch, ich mach was anderes&quot;}

};
</code></pre>
<p>Wenn ich es richtig verstanden habe, willst du von Basisklasse die Implementierung erben, nicht die Schnittstelle. Dazu verwendet man private Vererbung oder aggregation.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1901523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1901523</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sun, 23 May 2010 13:59:07 GMT</pubDate></item><item><title><![CDATA[Reply to Implementieren einer rein virtuellen Funktion durch eine andere Basisklasse on Sun, 23 May 2010 14:09:19 GMT]]></title><description><![CDATA[<p>Vielen Dank für eure schnelle Hilfe - mit euren Vorschlägen kann ich mir jetzt doch einige Coderedundanz ersparen <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>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1901527</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1901527</guid><dc:creator><![CDATA[Iriq]]></dc:creator><pubDate>Sun, 23 May 2010 14:09:19 GMT</pubDate></item><item><title><![CDATA[Reply to Implementieren einer rein virtuellen Funktion durch eine andere Basisklasse on Sun, 23 May 2010 15:01:08 GMT]]></title><description><![CDATA[<p>Du solltest Deiner Interfaceklasse noch einen virtuellen Destruktor verpassen. Sonst knallt es, wenn Du abgeleitete Objekte über Basisklassenzeiger zerstörst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1901551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1901551</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Sun, 23 May 2010 15:01:08 GMT</pubDate></item></channel></rss>