<?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[MI - von implementationsklasse erben]]></title><description><![CDATA[<p>Hallo</p>
<p>ich habe 4 klassen</p>
<pre><code class="language-cpp">struct interface // interface für alle klassen
{
    virtual void f() = 0;
};
struct buttoninterface : public interface // interface für einen button
{
};
class cbase: public interface // implementationsklasse, die viel zeugs verwaltet
{
    void f(){}
};
class cbutton : public cbase, public buttoninterface // die button-klasse
{
};
</code></pre>
<p>in diesem fall nutze ich MI um die implementation von immer wieder kehrenden<br />
funktionen hinzuzubinden. allerdings beschwert er sich, dass die cbutton<br />
klasse abstrakt ist. anscheinend verdeckt interface::f() die funktion cbase::f().</p>
<p>das soll aber so nicht sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>hab auch schon versucht eine klasse dazwischenzubauen.</p>
<p>ist das überhaut möglich?<br />
wie kann ich die cbutton klasse die methoden von cbase benutzen lassen?<br />
<strong>ohne</strong> alle methoden in cbutton als einzeiler einzubauen</p>
<p>MfG funny_cast</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240035/mi-von-implementationsklasse-erben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 05:30:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240035.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 30 Apr 2009 20:03:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to MI - von implementationsklasse erben on Thu, 30 Apr 2009 20:03:06 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ich habe 4 klassen</p>
<pre><code class="language-cpp">struct interface // interface für alle klassen
{
    virtual void f() = 0;
};
struct buttoninterface : public interface // interface für einen button
{
};
class cbase: public interface // implementationsklasse, die viel zeugs verwaltet
{
    void f(){}
};
class cbutton : public cbase, public buttoninterface // die button-klasse
{
};
</code></pre>
<p>in diesem fall nutze ich MI um die implementation von immer wieder kehrenden<br />
funktionen hinzuzubinden. allerdings beschwert er sich, dass die cbutton<br />
klasse abstrakt ist. anscheinend verdeckt interface::f() die funktion cbase::f().</p>
<p>das soll aber so nicht sein <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>hab auch schon versucht eine klasse dazwischenzubauen.</p>
<p>ist das überhaut möglich?<br />
wie kann ich die cbutton klasse die methoden von cbase benutzen lassen?<br />
<strong>ohne</strong> alle methoden in cbutton als einzeiler einzubauen</p>
<p>MfG funny_cast</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703873</guid><dc:creator><![CDATA[funny_cast]]></dc:creator><pubDate>Thu, 30 Apr 2009 20:03:06 GMT</pubDate></item><item><title><![CDATA[Reply to MI - von implementationsklasse erben on Thu, 30 Apr 2009 22:44:36 GMT]]></title><description><![CDATA[<p>Jein, das ist keine Verdeckung in dem Sinne. Durch mehrfache, nicht-virtuelle Vererbung hast du zwei Sub-Objekte vom Typ interface, die beide ein void f() haben wollen. Mit virtueller Vererbung sorgst du auch dafür, daß Daten nur einmal existieren, falls du sie in interface deklarierst und einige andere Haken und Ösen von Mehrfachvererbung. Natürlich gibt es dadurch die Haken und Ösen von virtueller Vererbung (du musst bei Downcasts von virtuellen Basisklassen aus dynamic_cast&lt;&gt; benutzen).</p>
<pre><code class="language-cpp">struct interface
{
    virtual void f() = 0;
};
struct buttoninterface : public virtual interface
{
};
class cbase: public virtual interface
{
    void f(){}
};
class cbutton : public cbase, public buttoninterface
{
};
</code></pre>
<p>Leitest du von cbutton weitere Klassen ab, die wiederum mehrfach von interface, buttoninterface oder cbase erben, dann solltest du auch in cbutton virtuell von cbase und buttoninterface erben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1703924</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1703924</guid><dc:creator><![CDATA[miep]]></dc:creator><pubDate>Thu, 30 Apr 2009 22:44:36 GMT</pubDate></item></channel></rss>