<?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[2 fragen zu verbung]]></title><description><![CDATA[<p>Hi,</p>
<p>ich beschäftige mich grad mit vererbung und komme an 2 stellen nicht weiter.</p>
<ol>
<li></li>
</ol>
<p>wenn ich in meiner 2. klasse den konstruktor der basisklasse aufrufen will geht das ja so:</p>
<pre><code class="language-cpp">klasse2::klasse2(int wert):basisklasse(wert){}
</code></pre>
<p>wenn ich aber den wert noch verändern will, wie geht das dann? habe folgendes probiert, was aber zum error &quot;shadows a parameter&quot; führt</p>
<pre><code class="language-cpp">klasse2::klasse2(int wert){
//rechne mit wert rum
   klasse2::basisklasse(wert);
}
</code></pre>
<ol start="2">
<li></li>
</ol>
<p>wie kann ich einer print-methode aus der basisklasse beibringen parameter meiner unterklasse mit auszugeben? ich habe folgendes:</p>
<pre><code class="language-cpp">class basisklasse{
private:
   int wert;
public:
   basisklasse(int wert){
   this-&gt;wert=wert;
   }
   void print(){
      cout &lt;&lt; wert &lt;&lt; endl;
   }
};

class klasse2{
private:
   static string name;
public:
   klasse2(int wert):basisklasse(wert){}
};
   klasse2::name=&quot;NAME&quot;;

//woanders dann parser:
   vector &lt;basisklasse*&gt; v;
// fülle v mit klasse2-objekten, die von basisklasse abgeleitet sind

int main (void){
   vector &lt;basisklasse*&gt; v;
   v=parser();
   for (size_t i = 0; i &lt; v.size(); i++) {
      v[i]-&gt;print(); // möchte hier aber als ausgabe NAME+wert
   }
}
</code></pre>
<p>steh hier grad völlig auf dem schlauch, vielleicht hat ja einer von euch ne idee.</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/269661/2-fragen-zu-verbung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 04:23:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269661.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Jun 2010 09:28:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2 fragen zu verbung on Tue, 29 Jun 2010 09:28:58 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich beschäftige mich grad mit vererbung und komme an 2 stellen nicht weiter.</p>
<ol>
<li></li>
</ol>
<p>wenn ich in meiner 2. klasse den konstruktor der basisklasse aufrufen will geht das ja so:</p>
<pre><code class="language-cpp">klasse2::klasse2(int wert):basisklasse(wert){}
</code></pre>
<p>wenn ich aber den wert noch verändern will, wie geht das dann? habe folgendes probiert, was aber zum error &quot;shadows a parameter&quot; führt</p>
<pre><code class="language-cpp">klasse2::klasse2(int wert){
//rechne mit wert rum
   klasse2::basisklasse(wert);
}
</code></pre>
<ol start="2">
<li></li>
</ol>
<p>wie kann ich einer print-methode aus der basisklasse beibringen parameter meiner unterklasse mit auszugeben? ich habe folgendes:</p>
<pre><code class="language-cpp">class basisklasse{
private:
   int wert;
public:
   basisklasse(int wert){
   this-&gt;wert=wert;
   }
   void print(){
      cout &lt;&lt; wert &lt;&lt; endl;
   }
};

class klasse2{
private:
   static string name;
public:
   klasse2(int wert):basisklasse(wert){}
};
   klasse2::name=&quot;NAME&quot;;

//woanders dann parser:
   vector &lt;basisklasse*&gt; v;
// fülle v mit klasse2-objekten, die von basisklasse abgeleitet sind

int main (void){
   vector &lt;basisklasse*&gt; v;
   v=parser();
   for (size_t i = 0; i &lt; v.size(); i++) {
      v[i]-&gt;print(); // möchte hier aber als ausgabe NAME+wert
   }
}
</code></pre>
<p>steh hier grad völlig auf dem schlauch, vielleicht hat ja einer von euch ne idee.</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1918781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918781</guid><dc:creator><![CDATA[kons]]></dc:creator><pubDate>Tue, 29 Jun 2010 09:28:58 GMT</pubDate></item><item><title><![CDATA[Reply to 2 fragen zu verbung on Tue, 29 Jun 2010 09:58:02 GMT]]></title><description><![CDATA[<p>kons schrieb:</p>
<blockquote>
<p>wenn ich aber den wert noch verändern will, wie geht das dann?</p>
</blockquote>
<p>So nicht, du kannst den Konstruktor der Basisklasse nicht verzögert aufrufen, da das Basisobjekt im Konstruktorrumpf bereits existieren muss. Warum kannst du dem Konstruktor nicht gleich den richtigen Wert übergeben?</p>
<p>kons schrieb:</p>
<blockquote>
<p>wie kann ich einer print-methode aus der basisklasse beibringen parameter meiner unterklasse mit auszugeben?</p>
</blockquote>
<p>Befasse dich mal mit dem Konzept der virtuellen Funktionen und Laufzeitpolymorphie.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1918794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918794</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 29 Jun 2010 09:58:02 GMT</pubDate></item><item><title><![CDATA[Reply to 2 fragen zu verbung on Tue, 29 Jun 2010 10:26:49 GMT]]></title><description><![CDATA[<p>Zu 1. wie Nexus schon schrieb, verzögert geht nicht, aber du kannst eine eigene Funktion verwenden:</p>
<pre><code class="language-cpp">klasse2::klasse2(int wert)
  : basisklasse(BerechneWert(wert))
{}

int klasse2::BerechneWert(int wert)
{
   return 2*wert; // oder auch komplizierter -)
}
</code></pre>
<p>Zu 2.</p>
<pre><code class="language-cpp">class basisklasse{

virtual void print()
{
  ...
}

};
</code></pre>
<p>Und in jeder abgeleiteten Klasse dann überschrieben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1918809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918809</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Tue, 29 Jun 2010 10:26:49 GMT</pubDate></item><item><title><![CDATA[Reply to 2 fragen zu verbung on Tue, 29 Jun 2010 11:04:13 GMT]]></title><description><![CDATA[<p>Th69 schrieb:</p>
<blockquote>
<p>Zu 1. wie Nexus schon schrieb, verzögert geht nicht, aber du kannst eine eigene Funktion verwenden:</p>
<pre><code class="language-cpp">klasse2::klasse2(int wert)
  : basisklasse(BerechneWert(wert))
{}

int klasse2::BerechneWert(int wert)
{
   return 2*wert; // oder auch komplizierter -)
}
</code></pre>
</blockquote>
<p>Was aber heikel ist, wenn man auf Member zugreift, die noch nicht initialisiert sind. Von daher würde wenn schon eine statische oder globale Funktion zur Berechnung verwenden. Global im anonymen Namensraum ist wahrscheinlich nicht schlecht, denn im Header muss die Deklaration ja nicht unbedingt stehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1918839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918839</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Tue, 29 Jun 2010 11:04:13 GMT</pubDate></item><item><title><![CDATA[Reply to 2 fragen zu verbung on Tue, 29 Jun 2010 12:45:59 GMT]]></title><description><![CDATA[<p>Sorry, ja, hätte ich dazu schreiben sollen, daß es eine statische Funktion sein sollte (oder aber wie du schreibst, global im anonymen Namensraum).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1918911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1918911</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Tue, 29 Jun 2010 12:45:59 GMT</pubDate></item></channel></rss>