<?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 Klassen]]></title><description><![CDATA[<p>Hallo,</p>
<p>könnt ihr mir sagen warum mein Compiler bei folgendem Code einen Fehler bringt?</p>
<p>ISO C++ forbids declaration of <code>Hund' with no type base</code>Tier' with only non-default constructor in class without a constructor<br />
In member function `int Hunde::Hund(const std::string&amp;, const std::string&amp;)':<br />
cpp only constructors take base initializers</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class Tier
{
    protected:
        string tierAttr;

    public:
        Tier(const string &amp;tAttr) : tierAttr(tAttr) {}

        virtual void identifizieren()
        {
            cout &lt;&lt; &quot;Ich bin ein &quot; &lt;&lt; tierAttr &lt;&lt; &quot;Tier&quot;;
        }

        virtual void geraeusch() = 0;
};

class Katze : public Tier
{
    private:
        string katzenAttr;

    public:
        Katze(const string &amp;tAttr, const string &amp;kAttr)
        : Tier(tAttr), katzenAttr(kAttr) {}

        virtual void identifizieren()
        {
            Tier::identifizieren();
            cout &lt;&lt; &quot; und eine &quot; &lt;&lt; katzenAttr &lt;&lt; &quot; Katze.&quot; &lt;&lt; endl;
        }  

        virtual void geraeusch()
        {
            cout &lt;&lt; &quot;Miau&quot; &lt;&lt; endl;
        }
};

class Hunde : public Tier
{
    private:
        string hundeAttr;

    public:
        Hund(const string &amp;tAttr, const string &amp;hAttr)
        : Tier(tAttr), hundeAttr(hAttr) {}

        virtual void identifizieren()
        {
            cout &lt;&lt; &quot;Ich bin ein &quot; &lt;&lt; tierAttr &lt;&lt; &quot;Tier&quot;;
            cout &lt;&lt; &quot; und ein &quot; &lt;&lt; hundeAttr &lt;&lt; &quot; Hund.&quot; &lt;&lt; endl;
        }

        virtual void geraeusch()
        {
            cout &lt;&lt; &quot;Wau, wau&quot; &lt;&lt; endl;
        }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/117933/abstrakte-klassen</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 05:21:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/117933.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 12 Aug 2005 16:41:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Abstrakte Klassen on Fri, 12 Aug 2005 16:41:43 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>könnt ihr mir sagen warum mein Compiler bei folgendem Code einen Fehler bringt?</p>
<p>ISO C++ forbids declaration of <code>Hund' with no type base</code>Tier' with only non-default constructor in class without a constructor<br />
In member function `int Hunde::Hund(const std::string&amp;, const std::string&amp;)':<br />
cpp only constructors take base initializers</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class Tier
{
    protected:
        string tierAttr;

    public:
        Tier(const string &amp;tAttr) : tierAttr(tAttr) {}

        virtual void identifizieren()
        {
            cout &lt;&lt; &quot;Ich bin ein &quot; &lt;&lt; tierAttr &lt;&lt; &quot;Tier&quot;;
        }

        virtual void geraeusch() = 0;
};

class Katze : public Tier
{
    private:
        string katzenAttr;

    public:
        Katze(const string &amp;tAttr, const string &amp;kAttr)
        : Tier(tAttr), katzenAttr(kAttr) {}

        virtual void identifizieren()
        {
            Tier::identifizieren();
            cout &lt;&lt; &quot; und eine &quot; &lt;&lt; katzenAttr &lt;&lt; &quot; Katze.&quot; &lt;&lt; endl;
        }  

        virtual void geraeusch()
        {
            cout &lt;&lt; &quot;Miau&quot; &lt;&lt; endl;
        }
};

class Hunde : public Tier
{
    private:
        string hundeAttr;

    public:
        Hund(const string &amp;tAttr, const string &amp;hAttr)
        : Tier(tAttr), hundeAttr(hAttr) {}

        virtual void identifizieren()
        {
            cout &lt;&lt; &quot;Ich bin ein &quot; &lt;&lt; tierAttr &lt;&lt; &quot;Tier&quot;;
            cout &lt;&lt; &quot; und ein &quot; &lt;&lt; hundeAttr &lt;&lt; &quot; Hund.&quot; &lt;&lt; endl;
        }

        virtual void geraeusch()
        {
            cout &lt;&lt; &quot;Wau, wau&quot; &lt;&lt; endl;
        }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/851062</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851062</guid><dc:creator><![CDATA[GR_Watto]]></dc:creator><pubDate>Fri, 12 Aug 2005 16:41:43 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klassen on Fri, 12 Aug 2005 16:44:17 GMT]]></title><description><![CDATA[<p>Ähm, keine ahnung, aber einmal haste Hunde und einma nur Hund geschrieben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851066</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851066</guid><dc:creator><![CDATA[Ali]]></dc:creator><pubDate>Fri, 12 Aug 2005 16:44:17 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klassen on Fri, 12 Aug 2005 17:00:55 GMT]]></title><description><![CDATA[<p>Mir ist der Begriff Polymorphismus nicht so ganz klar. Im Zusammenhang mit dem Programm oben würde ich gerne wissen ob dort Polymorphismus verwendet wird und falls ja wo. Eine kurze Erklärung dieses Begriffs wäre auch nicht schlecht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851077</guid><dc:creator><![CDATA[GR_Watto]]></dc:creator><pubDate>Fri, 12 Aug 2005 17:00:55 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klassen on Fri, 12 Aug 2005 17:37:30 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>du hast einen tippfehler. Das kann man mit eine bisschen überlegen aber auch aus der compilermeldung ersehen. Deine klasse heisst Hunde und deine methode die der ctor sein sollte nur Hund , ohne e. Der compiler weisst dich darauf hin dass nur construktoren initialisierungslisten haben. In deinem fall construierst du da das basisobject, deswegen baseinitializer. Ansonsten ist die fehlermeldung aber ähnlich. Naja wenn das also kein ctor ist dann muss da irgendwas faul sein. Also schreibweise überprüfen und schon weisst du es. Kurzum entweder klassennamen in Hund umändern oder ctor in Hunde umbenennen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851102</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851102</guid><dc:creator><![CDATA[prolog]]></dc:creator><pubDate>Fri, 12 Aug 2005 17:37:30 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klassen on Fri, 12 Aug 2005 17:54:05 GMT]]></title><description><![CDATA[<p>BTW: Man gibt Klassen üblicherweise Nomen in der Einzahl. Polymorphismus &quot;einsetzen&quot; könntest du jetzt so:</p>
<pre><code class="language-cpp">Tier* einTier = new Hund(blub,blub);
Tier* einAnderesTier = new Katze(blub,blub);

einTier-&gt;geraeusch(); // wau wau
einAnderesTier-&gt;geraeusch(); // miau
</code></pre>
<p>Ohne Polymorphismus würde die geraeusch()-Methdoe von Tier aufgerufen werden (welche es nicht gibt - daher kannst du auch gar kein Objekt vom Typ Tier anlegen sondern nur vom Typ Hund/Katze)</p>
<p>MfG SideWinder</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851117</guid><dc:creator><![CDATA[SideWinder]]></dc:creator><pubDate>Fri, 12 Aug 2005 17:54:05 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klassen on Fri, 12 Aug 2005 17:59:39 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>und noch eine anmerkung. Darüber bin ich ab und zu mal gestolpert. SideWinder hat ja zeiger benutzt. Das hat auch einen grund weil polymorphismus(polymorphy ?) nur mit zeigern und referenzen funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/851122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851122</guid><dc:creator><![CDATA[prolog]]></dc:creator><pubDate>Fri, 12 Aug 2005 17:59:39 GMT</pubDate></item><item><title><![CDATA[Reply to Abstrakte Klassen on Fri, 12 Aug 2005 21:08:52 GMT]]></title><description><![CDATA[<p>Eigentlich schon alles gesagt...<br />
Falls nicht, ein gutes Tut zu C++ ist:<br />
<a href="http://tutorial.schornboeck.net" rel="nofollow">http://tutorial.schornboeck.net</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/851281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/851281</guid><dc:creator><![CDATA[phlox81]]></dc:creator><pubDate>Fri, 12 Aug 2005 21:08:52 GMT</pubDate></item></channel></rss>