<?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[Konstruktor im Konstruktor aufrufen]]></title><description><![CDATA[<p>Hi<br />
hab schon im Spieleprogrammierungsforum gepostet, aber keine Antwort erhalten und da mein Problem eher auf C++ zurückzuführen ist, frag ich hier nochmal.<br />
Ich habe zwei Konstruktoren mit unterschiedlichen Parameterlisten. Um einen bestimmten Teil des Codes nicht doppelt zu haben (Redundanz, Wartbarkeit etc.), will ich in dem einen Konstruktor den anderen aufrufen. Allerdings macht das ganze nicht das, was ich will. Wie bekommt man sowas am besten hin? Mit einer privaten Funktion Init oder gibt es noch eine bessere Möglichkeit?<br />
Hier mal ein Beispielcode:</p>
<pre><code class="language-cpp">class foo
{
public:
  foo(int x) {....}
  foo(int x, int y);
};

foo(int x, int y)
{
  // hier muss ich foo(x) aufrufen und danach noch noch was mit dem y anstellen
  // mein Versuch, der gescheitert ist:
  foo::foo(x);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/185976/konstruktor-im-konstruktor-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 24 Sep 2026 06:30:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/185976.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 03 Jul 2007 16:37:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Tue, 03 Jul 2007 16:37:35 GMT]]></title><description><![CDATA[<p>Hi<br />
hab schon im Spieleprogrammierungsforum gepostet, aber keine Antwort erhalten und da mein Problem eher auf C++ zurückzuführen ist, frag ich hier nochmal.<br />
Ich habe zwei Konstruktoren mit unterschiedlichen Parameterlisten. Um einen bestimmten Teil des Codes nicht doppelt zu haben (Redundanz, Wartbarkeit etc.), will ich in dem einen Konstruktor den anderen aufrufen. Allerdings macht das ganze nicht das, was ich will. Wie bekommt man sowas am besten hin? Mit einer privaten Funktion Init oder gibt es noch eine bessere Möglichkeit?<br />
Hier mal ein Beispielcode:</p>
<pre><code class="language-cpp">class foo
{
public:
  foo(int x) {....}
  foo(int x, int y);
};

foo(int x, int y)
{
  // hier muss ich foo(x) aufrufen und danach noch noch was mit dem y anstellen
  // mein Versuch, der gescheitert ist:
  foo::foo(x);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1317634</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317634</guid><dc:creator><![CDATA[Amateur]]></dc:creator><pubDate>Tue, 03 Jul 2007 16:37:35 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Tue, 03 Jul 2007 16:45:12 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Mit einer privaten Funktion Init</p>
</blockquote>
<p>Korrekt. Konstruktoren kann man nämlich nicht wie normale Methoden aufrufen.<br />
In deinem Fall wird nichts weiter gemacht als ein temporäres Objekt erstellt das gleich wieder gelöscht wird.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317640</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317640</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 03 Jul 2007 16:45:12 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Tue, 03 Jul 2007 18:05:40 GMT]]></title><description><![CDATA[<p>c++ bietet allerdings die möglichkeit der parametervorbelegung.</p>
<pre><code class="language-cpp">foo(int x, int y = 0);
// ...
foo f(23);
</code></pre>
<p>bei primitiven typen hast du allerdings das problem, dass es schwer wird, einen übergebenen parameter von einem nicht übergebenen zu unterscheiden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317678</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317678</guid><dc:creator><![CDATA[thordk]]></dc:creator><pubDate>Tue, 03 Jul 2007 18:05:40 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Tue, 03 Jul 2007 19:35:20 GMT]]></title><description><![CDATA[<p>Ja, private Init Funktion, wurde schon geschrieben, that's the way to go.</p>
<p>Nur so nebenbei: 'explicit' nicht vergessen (es sei denn du willst dass ein int implizit in ein foo konvertierbar ist).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317718</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317718</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 03 Jul 2007 19:35:20 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Wed, 04 Jul 2007 06:32:19 GMT]]></title><description><![CDATA[<p>placement new auf this könnt da abhilfe schaffen.<br />
wobei ich das nicht getestet hab <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /><br />
ausserdem schauts schirch aus, da wär die init funktion schöner.</p>
<pre><code class="language-cpp">foo::foo(int x, int y)
{
 new(this) foo(x); 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1317899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317899</guid><dc:creator><![CDATA[inp]]></dc:creator><pubDate>Wed, 04 Jul 2007 06:32:19 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Wed, 04 Jul 2007 06:36:10 GMT]]></title><description><![CDATA[<p>inp schrieb:</p>
<blockquote>
<p>placement new auf this könnt da abhilfe schaffen.<br />
wobei ich das nicht getestet hab <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
</blockquote>
<p>Damit werden sämtliche Basisklassen und Membervariablen nach der Default-Konstruktion nochmal konstruiert. Das provoziert nur Ressourcen-Lecks.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1317902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1317902</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 04 Jul 2007 06:36:10 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Wed, 04 Jul 2007 09:28:31 GMT]]></title><description><![CDATA[<p>LordJaxom schrieb:</p>
<blockquote>
<p>inp schrieb:</p>
<blockquote>
<p>placement new auf this könnt da abhilfe schaffen.<br />
wobei ich das nicht getestet hab <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
</blockquote>
<p>Damit werden sämtliche Basisklassen und Membervariablen nach der Default-Konstruktion nochmal konstruiert. Das provoziert nur Ressourcen-Lecks.</p>
</blockquote>
<p>stimmt, aber im falle das die klasse nicht für vererbung gedacht ist wärs ne lösung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318026</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318026</guid><dc:creator><![CDATA[inp]]></dc:creator><pubDate>Wed, 04 Jul 2007 09:28:31 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Wed, 04 Jul 2007 13:27:51 GMT]]></title><description><![CDATA[<p>inp schrieb:</p>
<blockquote>
<p>LordJaxom schrieb:</p>
<blockquote>
<p>inp schrieb:</p>
<blockquote>
<p>placement new auf this könnt da abhilfe schaffen.<br />
wobei ich das nicht getestet hab <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
</blockquote>
<p>Damit werden sämtliche Basisklassen und Membervariablen nach der Default-Konstruktion nochmal konstruiert. Das provoziert nur Ressourcen-Lecks.</p>
</blockquote>
<p>stimmt, aber im falle das die klasse nicht für vererbung gedacht ist wärs ne lösung.</p>
</blockquote>
<p>Wenn es dir egal ist dass der Code strenggenommen falsch ist vielleicht.<br />
Das Problem ist: an der Stelle wo du dein placement new aufrufst ist das Objekt schon konstruiert. Du konstruierst also ein Objekt über ein anderes drüber. Bin mir ziemlich sicher dass das laut Standard undefiniertes Verhalten ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318248</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318248</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 04 Jul 2007 13:27:51 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Wed, 04 Jul 2007 13:30:33 GMT]]></title><description><![CDATA[<p>Die Klasse braucht ja nur einen std::string enthalten, dann kommt es schon völlig ohne Vererbung zu Problemen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318252</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318252</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 04 Jul 2007 13:30:33 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Wed, 04 Jul 2007 14:27:02 GMT]]></title><description><![CDATA[<p>mmmk, placement new im konstruktor ist böse <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318302</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318302</guid><dc:creator><![CDATA[inp]]></dc:creator><pubDate>Wed, 04 Jul 2007 14:27:02 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Wed, 04 Jul 2007 17:43:26 GMT]]></title><description><![CDATA[<p>inp schrieb:</p>
<blockquote>
<p>mmmk, placement new im konstruktor ist böse <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
</blockquote>
<p>Sagen wir lieber p-new ist auf this böse <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
In Exceptional C++ stehen ein paar Seiten dazu und wie böse es sei ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318435</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318435</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 04 Jul 2007 17:43:26 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Wed, 04 Jul 2007 20:22:38 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>inp schrieb:</p>
<blockquote>
<p>mmmk, placement new im konstruktor ist böse <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /></p>
</blockquote>
<p>Sagen wir lieber p-new ist auf this böse <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
In Exceptional C++ stehen ein paar Seiten dazu und wie böse es sei ...</p>
</blockquote>
<p>les grad more exceptional, muss eh noch das ganze wissen was ich das ganze letzte halbe jahr angelesen hab umsetzen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /> damit es fest wird <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/1318536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318536</guid><dc:creator><![CDATA[inp]]></dc:creator><pubDate>Wed, 04 Jul 2007 20:22:38 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Wed, 04 Jul 2007 20:27:00 GMT]]></title><description><![CDATA[<p>inp schrieb:</p>
<blockquote>
<p>more exceptional</p>
</blockquote>
<p>Schlummert bei mir immer noch im Regal und wartet darauf von mir gelesen zu werden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318540</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 04 Jul 2007 20:27:00 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Wed, 04 Jul 2007 20:52:21 GMT]]></title><description><![CDATA[<p>KasF schrieb:</p>
<blockquote>
<p>inp schrieb:</p>
<blockquote>
<p>more exceptional</p>
</blockquote>
<p>Schlummert bei mir immer noch im Regal und wartet darauf von mir gelesen zu werden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /></p>
</blockquote>
<p>hehe, bei mir schlummert noch das red dragon book (angekratzt), 3d engine design (angekratzt), graphics programming black book (angekratzt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /> ), graphics programming (van dam) <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>wenn ich mit all dem fertig bin vergeht sicher noch ein halbes jahr <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/1318553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318553</guid><dc:creator><![CDATA[inp]]></dc:creator><pubDate>Wed, 04 Jul 2007 20:52:21 GMT</pubDate></item><item><title><![CDATA[Reply to Konstruktor im Konstruktor aufrufen on Wed, 04 Jul 2007 21:02:53 GMT]]></title><description><![CDATA[<p>inp schrieb:</p>
<blockquote>
<p>hehe, bei mir schlummert noch das red dragon book (angekratzt), 3d engine design (angekratzt), graphics programming black book (angekratzt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":-)"
      alt="🙂"
    /> ), graphics programming (van dam) <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>wenn ich mit all dem fertig bin vergeht sicher noch ein halbes jahr <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>Hehe das kenn ich nur zu gut :). OK Off-Topic, wir hören hier lieber auf ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1318556</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1318556</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 04 Jul 2007 21:02:53 GMT</pubDate></item></channel></rss>