<?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[Parameter an Konstruktor weitergeben]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe eine Basisklasse (Vogel) und weitere Unterklassen (z.B Spatz), die von dieser Basisklasse erben.</p>
<p>Nun habe ich die Variable m_color, die ich als Konstruktorargument erwarte:</p>
<pre><code class="language-cpp">class Vogel {
  public:
    Vogel(string color = &quot;blau&quot;) : m_color(color) {}
  private:
    string m_color;
};

class Spatz : public Vogel {
  public:
    Spatz(string color) {}
};

int main() {
  Spatz spatz = new Spatz(&quot;gruen&quot;); // m_color wird immer &quot;blau&quot;!
  return 0;
}
</code></pre>
<p>Seht ihr vielleicht was ich falsch mache? Wenn ich dem Konstruktor von Vogel keien Standartwerte zuweise, meckert der Compiler, dass es diese braucht...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/258399/parameter-an-konstruktor-weitergeben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 09 Sep 2026 10:35:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/258399.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 10 Jan 2010 09:40:02 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Parameter an Konstruktor weitergeben on Sun, 10 Jan 2010 09:40:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich habe eine Basisklasse (Vogel) und weitere Unterklassen (z.B Spatz), die von dieser Basisklasse erben.</p>
<p>Nun habe ich die Variable m_color, die ich als Konstruktorargument erwarte:</p>
<pre><code class="language-cpp">class Vogel {
  public:
    Vogel(string color = &quot;blau&quot;) : m_color(color) {}
  private:
    string m_color;
};

class Spatz : public Vogel {
  public:
    Spatz(string color) {}
};

int main() {
  Spatz spatz = new Spatz(&quot;gruen&quot;); // m_color wird immer &quot;blau&quot;!
  return 0;
}
</code></pre>
<p>Seht ihr vielleicht was ich falsch mache? Wenn ich dem Konstruktor von Vogel keien Standartwerte zuweise, meckert der Compiler, dass es diese braucht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1836067</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1836067</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Sun, 10 Jan 2010 09:40:15 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter an Konstruktor weitergeben on Sun, 10 Jan 2010 09:42:36 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class Vogel {
  public:
    Vogel(string color = &quot;blau&quot;) : m_color(color) {}
  private:
    string m_color;
};

class Spatz : public Vogel {
  public:
    Spatz(string color) : Vogel(color) {}
};

int main() {
  Spatz spatz(&quot;gruen&quot;);
  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1836068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1836068</guid><dc:creator><![CDATA[Ryuzaki]]></dc:creator><pubDate>Sun, 10 Jan 2010 09:42:36 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter an Konstruktor weitergeben on Sun, 10 Jan 2010 09:46:07 GMT]]></title><description><![CDATA[<p>Auf den Ersten Blick würde ich sagen, dass du in Zeile 3 das = &quot;blau&quot; weglassen musst und die Konstruktoren sind falsch, der Spatz erbt ja vom Vogel. Dann müsste es funktionieren!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1836069</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1836069</guid><dc:creator><![CDATA[*MOP*]]></dc:creator><pubDate>Sun, 10 Jan 2010 09:46:07 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter an Konstruktor weitergeben on Sun, 10 Jan 2010 09:43:40 GMT]]></title><description><![CDATA[<p>Du musst den Konstruktor von der Basis Klasse aufrufen:</p>
<pre><code class="language-cpp">class Vogel {
  public:
    Vogel(string color) : m_color(color) {}
  private:
    string m_color;
};

class Spatz : public Vogel {
  public:
    Spatz(string color) : Vogel(color) {}
};

int main() {
  Spatz spatz = new Spatz(&quot;gruen&quot;); // m_color wird immer &quot;blau&quot;!
  return 0;
}
</code></pre>
<p>Ausserdem würde ich den color Parameter als const std::string&amp; übergeben.<br />
Gruss Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1836070</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1836070</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sun, 10 Jan 2010 09:43:40 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter an Konstruktor weitergeben on Sun, 10 Jan 2010 09:44:39 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<p>Du musst den Konstruktor von der Basis Klasse aufrufen:</p>
<pre><code class="language-cpp">class Vogel {
  public:
    Vogel(string color) : m_color(color) {}
  private:
    string m_color;
};

class Spatz : public Vogel {
  public:
    Spatz(string color) : Vogel(color) {}
};

int main() {
  Spatz spatz = new Spatz(&quot;gruen&quot;); // m_color wird immer &quot;blau&quot;!
  return 0;
}
</code></pre>
<p>Ausserdem würde ich den color Parameter als const std::string&amp; übergeben.<br />
Gruss Simon</p>
</blockquote>
<p>Danke für eure Antworten!</p>
<p>Die Farbe übergebe ich sowieso als unsigned int, is ein Macro :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1836071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1836071</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Sun, 10 Jan 2010 09:44:39 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter an Konstruktor weitergeben on Sun, 10 Jan 2010 09:58:00 GMT]]></title><description><![CDATA[<p>Igitt! Kein Makro! Nimm stattdessen <code>enum</code> !</p>
<pre><code class="language-cpp">class Vogel {
   enum color {
      red, green, blue ...
   };
}

...

Spatz* spatz = new Spatz(Vogel::red);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1836084</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1836084</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Sun, 10 Jan 2010 09:58:00 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter an Konstruktor weitergeben on Sun, 10 Jan 2010 10:08:39 GMT]]></title><description><![CDATA[<p>Ad aCTa schrieb:</p>
<blockquote>
<p>Igitt! Kein Makro! Nimm stattdessen <code>enum</code> !</p>
<pre><code class="language-cpp">class Vogel {
   enum color {
      red, green, blue ...
   };
}

...

Spatz* spatz = new Spatz(Vogel::red);
</code></pre>
</blockquote>
<p>Ist das denn besser?</p>
<p>Falls ja, wieso :o. Zum Beispiel windows.h benutzt doch auch Macros <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/1836089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1836089</guid><dc:creator><![CDATA[Samyboy]]></dc:creator><pubDate>Sun, 10 Jan 2010 10:08:39 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter an Konstruktor weitergeben on Sun, 10 Jan 2010 10:26:43 GMT]]></title><description><![CDATA[<blockquote>
<p>Ist das denn besser?</p>
</blockquote>
<p>Ja. Siehe z.B. hier:<br />
<a href="http://www.comeaucomputing.com/techtalk/#definevsconst" rel="nofollow">http://www.comeaucomputing.com/techtalk/#definevsconst</a></p>
<blockquote>
<p>Zum Beispiel windows.h benutzt doch auch Macros</p>
</blockquote>
<p>1. ist der besagte Header schon ziemlich alt und<br />
2. ist es ein C- Header</p>
<p>Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1836112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1836112</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Sun, 10 Jan 2010 10:26:43 GMT</pubDate></item><item><title><![CDATA[Reply to Parameter an Konstruktor weitergeben on Sun, 10 Jan 2010 15:04:55 GMT]]></title><description><![CDATA[<p>Samyboy schrieb:</p>
<blockquote>
<pre><code class="language-cpp">Spatz spatz = new Spatz(&quot;gruen&quot;);
</code></pre>
</blockquote>
<p>Gibt es irgendeinen Grund, wieso du hier Speicher dynamisch allokierst? Gewöhne dir solche Dinge nicht an, vor allem nicht, ohne den Speicher wieder freizugeben!</p>
<p>Ad aCTa schrieb:</p>
<blockquote>
<p>Igitt! Kein Makro! Nimm stattdessen <code>enum</code> !</p>
</blockquote>
<p>Sehr gute Idee. Man muss dann allerdings auch den Konstruktor anpassen, sonst verliert man wieder Typsicherheit.</p>
<pre><code class="language-cpp">Spatz(Vogel::color col);
</code></pre>
<p>Samyboy schrieb:</p>
<blockquote>
<p>Zum Beispiel windows.h benutzt doch auch Macros <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>
</blockquote>
<p>Das ist ja mal ein Argument...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1836327</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1836327</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 10 Jan 2010 15:04:55 GMT</pubDate></item></channel></rss>