<?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[C++ Frage zur Vererbung]]></title><description><![CDATA[<p>Ich versuche gerade in bei der Vererbung durchzusteigen. Nur bekomme ich die Syntax nicht hin.<br />
Ich bin mir sicher wenn sich einer von euch C++ Cracks den Code reinzieht weiss er sofort was falsch ist.</p>
<p>Ob das Beispiel jetzt gut oder schlecht ist bleibt dahingestellt.<br />
Die Klasse Man soll von der Elternklasse Human erben. Aber ich bekomme immer einen Compilerfehler. Ich sehe aber den Fehler nicht.</p>
<p>Compieler Aufruf:<br />
g++ -o programm programm.cpp human.cpp</p>
<p>[human.hpp]<br />
class Human {<br />
public:<br />
Human::Human(int);<br />
int getAge();</p>
<p>protected:<br />
int itsAge;<br />
};</p>
<p>class Man: public Human {<br />
public:<br />
void drinkBeer();<br />
};</p>
<p>[human.cpp]<br />
#include &lt;iostream.h&gt;<br />
#include &quot;human.hpp&quot;</p>
<p>Human::Human(int age) {<br />
itsAge = age;<br />
}</p>
<p>int Human::getAge() {<br />
return(itsAge);<br />
}</p>
<p>void Man::drinkBeer {<br />
cout &lt;&lt; &quot;Hicks\n&quot;;<br />
}</p>
<p>[programm.cpp]<br />
#include &lt;iostream.h&gt;<br />
#include &quot;human.hpp&quot;</p>
<p>int main() {<br />
Human hans(10);</p>
<p>cout &lt;&lt; hans.getAge() &lt;&lt; &quot;\n&quot;;</p>
<p>return(0);<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/117677/c-frage-zur-vererbung</link><generator>RSS for Node</generator><lastBuildDate>Fri, 21 Aug 2026 02:54:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/117677.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 10 Aug 2005 10:12:57 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ Frage zur Vererbung on Wed, 10 Aug 2005 10:12:57 GMT]]></title><description><![CDATA[<p>Ich versuche gerade in bei der Vererbung durchzusteigen. Nur bekomme ich die Syntax nicht hin.<br />
Ich bin mir sicher wenn sich einer von euch C++ Cracks den Code reinzieht weiss er sofort was falsch ist.</p>
<p>Ob das Beispiel jetzt gut oder schlecht ist bleibt dahingestellt.<br />
Die Klasse Man soll von der Elternklasse Human erben. Aber ich bekomme immer einen Compilerfehler. Ich sehe aber den Fehler nicht.</p>
<p>Compieler Aufruf:<br />
g++ -o programm programm.cpp human.cpp</p>
<p>[human.hpp]<br />
class Human {<br />
public:<br />
Human::Human(int);<br />
int getAge();</p>
<p>protected:<br />
int itsAge;<br />
};</p>
<p>class Man: public Human {<br />
public:<br />
void drinkBeer();<br />
};</p>
<p>[human.cpp]<br />
#include &lt;iostream.h&gt;<br />
#include &quot;human.hpp&quot;</p>
<p>Human::Human(int age) {<br />
itsAge = age;<br />
}</p>
<p>int Human::getAge() {<br />
return(itsAge);<br />
}</p>
<p>void Man::drinkBeer {<br />
cout &lt;&lt; &quot;Hicks\n&quot;;<br />
}</p>
<p>[programm.cpp]<br />
#include &lt;iostream.h&gt;<br />
#include &quot;human.hpp&quot;</p>
<p>int main() {<br />
Human hans(10);</p>
<p>cout &lt;&lt; hans.getAge() &lt;&lt; &quot;\n&quot;;</p>
<p>return(0);<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849227</guid><dc:creator><![CDATA[neal_the_real]]></dc:creator><pubDate>Wed, 10 Aug 2005 10:12:57 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Frage zur Vererbung on Wed, 10 Aug 2005 10:18:18 GMT]]></title><description><![CDATA[<p>neal_the_real schrieb:</p>
<blockquote>
<p>Aber ich bekomme immer einen Compilerfehler.</p>
</blockquote>
<p>Echt? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>Es ist immer <strong>sehr hilfreich</strong>, wenn man die Fehlermeldung dazu schreibt, und kennzeichnet, in welcher Zeile der Fehler sein soll.</p>
<p>Ich sehe da veraltete Headerdateien und fehlende runde Klammern bei der Definition von Man::drinkBeer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849233</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 10 Aug 2005 10:18:18 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Frage zur Vererbung on Wed, 10 Aug 2005 10:20:09 GMT]]></title><description><![CDATA[<p>MFK schrieb:</p>
<blockquote>
<p>Ich sehe da veraltete Headerdateien und fehlende runde Klammern bei der Definition von Man::drinkBeer.</p>
</blockquote>
<p>Habs getestet, das ist der Fehler!</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849239</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849239</guid><dc:creator><![CDATA[linu*x*bie]]></dc:creator><pubDate>Wed, 10 Aug 2005 10:20:09 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Frage zur Vererbung on Wed, 10 Aug 2005 10:22:59 GMT]]></title><description><![CDATA[<p>10 C:\temp\human.hpp base `Human' with only non-default constructor in class without a constructor</p>
<p>Ich denke er meint den.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849244</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849244</guid><dc:creator><![CDATA[asdrubael]]></dc:creator><pubDate>Wed, 10 Aug 2005 10:22:59 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Frage zur Vererbung on Wed, 10 Aug 2005 10:26:31 GMT]]></title><description><![CDATA[<p>Naja ich bin mir jetzt nicht so sicher ob die Fehlermeldungen euch wirklich helfen. Die sehen ja bei jeden Complier anderst aus. Ich arbeite mit linux g++3.3<br />
Deswegen hab ich es weg gelassen. Das mit den runden Klammern hab ich jetzt geaendert. Aber ich bekomme immer noch folgenden Fehler:</p>
<p>g++ -o programm programm.cpp human.cpp<br />
In file included from programm.cpp:2:<br />
human.hpp:10: error: base <code>Human' with only non-default constructor in class without a constructor In file included from human.cpp:2: human.hpp:10: error: base</code>Human' with only non-default constructor in class<br />
without a constructor</p>
<p>Vielleicht sagt euch das jetzt mehr.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849245</guid><dc:creator><![CDATA[neal_the_real]]></dc:creator><pubDate>Wed, 10 Aug 2005 10:26:31 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Frage zur Vererbung on Wed, 10 Aug 2005 10:56:19 GMT]]></title><description><![CDATA[<p>Du rufst denn Constructor der Human-Basisklasse in der Man-Class nicht auf! Vielleicht liegts daran?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849286</guid><dc:creator><![CDATA[linu*x*bie]]></dc:creator><pubDate>Wed, 10 Aug 2005 10:56:19 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Frage zur Vererbung on Wed, 10 Aug 2005 11:28:26 GMT]]></title><description><![CDATA[<p>Da Man von Human abgeleitet ist muss in Man ein Konstruktor bereitstehen der dann ja auch ein Human Objekt erzeugen kann.</p>
<p>Da du in Man keinen Konstruktor hast erzeugt dein Compiler automatisch sowas:</p>
<pre><code class="language-cpp">Man();
</code></pre>
<p>also einen Default Konstruktor und da Man von Human abgeleitet ist muss sowas da stehen(hoffe mal das ich jetzt nichts falsches sage):</p>
<pre><code class="language-cpp">Man():Human();
</code></pre>
<p>Das heißt wenn ein Man Objekt erzeugt wird muss auch ein Human Objekt erzeugt werden. Aber leider gibt es in Human keinen:</p>
<pre><code class="language-cpp">Human();
</code></pre>
<p>Default-Konstruktor sondern nur den hier:</p>
<pre><code class="language-cpp">Human(int age);
</code></pre>
<p>Das heißt dann das in Man etwas sein muss um so einen Konstruktor anzusprechen. Und da macht man es dann so:</p>
<pre><code class="language-cpp">Man(int age):Human(age);
</code></pre>
<p>Du stellst in Man diesen Konstruktor zur Verfügung der dann das int age weiter &quot;nach oben&quot; zu Human reicht und somit Human(int age) ansprechen kann <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="😃"
    /> <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>
]]></description><link>https://www.c-plusplus.net/forum/post/849313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849313</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 10 Aug 2005 11:28:26 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Frage zur Vererbung on Wed, 10 Aug 2005 11:27:34 GMT]]></title><description><![CDATA[<p>bzw. die Man-klasse hat garkeinen Konstruktor<br />
-&gt; der Compiler strickt sich den default-Ctor für Man selbst, indem er für die Basisklasse und alle Member den default-Ctor aufruft<br />
Die Basisklasse hat keinen Default-Ctor --&gt; großes Dilemma.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849314</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 10 Aug 2005 11:27:34 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Frage zur Vererbung on Wed, 10 Aug 2005 12:30:57 GMT]]></title><description><![CDATA[<p>Ok, danke fuer die Tips. Jetzt habe ich es hinbekommen.</p>
<p>Noch eine Frage zu den Header / Libs Datein.<br />
Ist es sinnvoll, oder ueberhaupt moeglich, die class Man in extra Dateien also z.B. man.hpp / man.cpp zu legen? Ich hab mir gedacht das alles schoen aufgeraeumt ist und man jede Klasse in separate Files schreibt. Bei so einem kleinen Programm ist es natuerlich nicht noetig. Aber fuer groessere Sachen?</p>
<p>Danke und Gruss Neal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849362</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849362</guid><dc:creator><![CDATA[neal_the_real]]></dc:creator><pubDate>Wed, 10 Aug 2005 12:30:57 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Frage zur Vererbung on Wed, 10 Aug 2005 12:55:19 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Für größere Projekte ist es bestimmt sehr nützlich, weil du dann genau weißt wo welcher Quellcode ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849375</guid><dc:creator><![CDATA[Stormrage]]></dc:creator><pubDate>Wed, 10 Aug 2005 12:55:19 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Frage zur Vererbung on Wed, 10 Aug 2005 13:22:16 GMT]]></title><description><![CDATA[<p>Ja, ok. Aber wie.</p>
<p>Wie kann ich der man.hpp sagen das sie von human.hpp erbt?</p>
<p>Ich bekomme folgenden Fehler beim uebersetzten. Irgendwie ist mir das schon klar das es so nicht geht. Aber ich weiss auch nicht wie ich es richtig machen kann.</p>
<p>Fehlermeldung:<br />
neal@client01:~/cpp/human$ g++ -o programm programm.cpp human.cpp man.cpp<br />
In file included from man.hpp:1,<br />
from programm.cpp:3:<br />
human.hpp:2: error: redefinition of <code>class Human' human.hpp:2: error: previous definition of</code>class Human'</p>
<pre><code class="language-cpp">#include &lt;iostream.h&gt; // human.cpp
#include &quot;human.hpp&quot;

Human::Human(int age) {
  itsAge = age;
}

int Human::getAge() {
  return(itsAge);
}
</code></pre>
<pre><code class="language-cpp">// human.hpp
class Human {
  public:
    Human::Human(int);
    int getAge();

  protected:
    int itsAge; 
};
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream.h&gt; // man.cpp
#include &quot;man.hpp&quot;

Man::Man(int age) : Human(age){
  itsAge = age;
}

void Man::drinkBeer() {
  cout &lt;&lt; &quot;Hicks\n&quot;;
}
</code></pre>
<pre><code class="language-cpp">#include &quot;human.hpp&quot; // man.hpp

class Man: public Human {
  public:
    Man(int);
    void drinkBeer();
};
</code></pre>
<pre><code class="language-cpp">#include &lt;iostream.h&gt; // programm.cpp
#include &quot;human.hpp&quot;
#include &quot;man.hpp&quot;

int main() {
  Human hans(10);
  Man franz(20);

  cout &lt;&lt; hans.getAge() &lt;&lt; &quot;\n&quot;;
  cout &lt;&lt; franz.getAge() &lt;&lt; &quot;\n&quot;;

  franz.drinkBeer();  

  return(0);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/849399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849399</guid><dc:creator><![CDATA[neal_the_real]]></dc:creator><pubDate>Wed, 10 Aug 2005 13:22:16 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Frage zur Vererbung on Wed, 10 Aug 2005 13:24:48 GMT]]></title><description><![CDATA[<p>Such mal nach include guards.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849403</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Wed, 10 Aug 2005 13:24:48 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Frage zur Vererbung on Wed, 10 Aug 2005 13:43:04 GMT]]></title><description><![CDATA[<p>Ich hab folgenden LInk gefunden. Der scheint mir vielversprechend zu sein.<br />
Da werd ich mich jetzt mal durchkämpfen.</p>
<p><a href="http://userpage.fu-berlin.de/~ram/pub/pub_jf47hxhHHt/c++_getrennte_uebersetzung_de" rel="nofollow">http://userpage.fu-berlin.de/~ram/pub/pub_jf47hxhHHt/c++_getrennte_uebersetzung_de</a></p>
<p>Danke und Gruss Neal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/849421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/849421</guid><dc:creator><![CDATA[neal_the_real]]></dc:creator><pubDate>Wed, 10 Aug 2005 13:43:04 GMT</pubDate></item></channel></rss>