<?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[initialisierungsliste entfernen?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe einen konstruktor wie folgt (vereinfacht)</p>
<pre><code class="language-cpp">A::
  A()
   :ns1::B(),
    m_apc(GetD(), GetE()),
  { moreCode }
</code></pre>
<p>GetD() und GetE sind in der Klasse B definiert, von der meine Klasse ableitet.<br />
Soweit funktioniert das.</p>
<p>Jetzt will ich aber beim initialisieren von m_apc anstelle von GetD() einen anderen Wert übergeben, den ich aber erst noch berechnen muss. Wie mach ich das?</p>
<p>Für B kann ich nicht einfach einen neue Methode einführen oder GetD() anpassen, da ich darauf keinen zugriff hab.</p>
<p>wenn ich die zuweisung einfach in den Rumpf verlagere, kommt der fehler &quot;kein geeigneter Standardkonstruktor verfügbar&quot;</p>
<p>Ich denk das ist ein Standardproblem, leider hab ich mit der Suchfunktion ncihts gefudnen, bin dankbar für jede Hilfe!</p>
<p>das FAQ Thema <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-259736.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-259736.html</a> hab ich mir schon angeschaut, bin trotzdem noch nicht weiter <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f622.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--crying_face"
      title=";-("
      alt="😢"
    /></p>
<p>Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/267864/initialisierungsliste-entfernen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 07:02:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267864.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 31 May 2010 14:49:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to initialisierungsliste entfernen? on Mon, 31 May 2010 14:49:34 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe einen konstruktor wie folgt (vereinfacht)</p>
<pre><code class="language-cpp">A::
  A()
   :ns1::B(),
    m_apc(GetD(), GetE()),
  { moreCode }
</code></pre>
<p>GetD() und GetE sind in der Klasse B definiert, von der meine Klasse ableitet.<br />
Soweit funktioniert das.</p>
<p>Jetzt will ich aber beim initialisieren von m_apc anstelle von GetD() einen anderen Wert übergeben, den ich aber erst noch berechnen muss. Wie mach ich das?</p>
<p>Für B kann ich nicht einfach einen neue Methode einführen oder GetD() anpassen, da ich darauf keinen zugriff hab.</p>
<p>wenn ich die zuweisung einfach in den Rumpf verlagere, kommt der fehler &quot;kein geeigneter Standardkonstruktor verfügbar&quot;</p>
<p>Ich denk das ist ein Standardproblem, leider hab ich mit der Suchfunktion ncihts gefudnen, bin dankbar für jede Hilfe!</p>
<p>das FAQ Thema <a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-259736.html" rel="nofollow">http://www.c-plusplus.net/forum/viewtopic-var-t-is-259736.html</a> hab ich mir schon angeschaut, bin trotzdem noch nicht weiter <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f622.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--crying_face"
      title=";-("
      alt="😢"
    /></p>
<p>Stefan</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905001</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905001</guid><dc:creator><![CDATA[rewireable]]></dc:creator><pubDate>Mon, 31 May 2010 14:49:34 GMT</pubDate></item><item><title><![CDATA[Reply to initialisierungsliste entfernen? on Mon, 31 May 2010 14:59:02 GMT]]></title><description><![CDATA[<p>Du darfst in der Initialisierungsliste auch gerne rechnen oder Funktionen aufrufen. Falls die Klasse von m_apc es erlaubt, nachträglich den Wert zu ändern könntest du alternativ auch zunächst mit Dummy-Parametern initialisieren und dann später die berechneten Werte setzen.</p>
<p>Beantwortet das deine Frage? Ich bin mir nämlich nicht so sicher, dass ich dich richtig verstanden habe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905009</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 31 May 2010 14:59:02 GMT</pubDate></item><item><title><![CDATA[Reply to initialisierungsliste entfernen? on Mon, 31 May 2010 15:22:36 GMT]]></title><description><![CDATA[<p>Das geht auf jeden Fall in die richtige Richtung.</p>
<p>kann ich in der initalisierungsliste auch funktionen der Klasse aufrufen? aktuell ruf ich ja eine funktion der Oberklasse auf, deren konstruktor ist ja schon durchgelaufen, aber mein eigener konstruktor noch nicht....</p>
<p>danke schon mal soweit!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905035</guid><dc:creator><![CDATA[rewireable]]></dc:creator><pubDate>Mon, 31 May 2010 15:22:36 GMT</pubDate></item><item><title><![CDATA[Reply to initialisierungsliste entfernen? on Mon, 31 May 2010 15:28:41 GMT]]></title><description><![CDATA[<p>rewireable schrieb:</p>
<blockquote>
<pre><code class="language-cpp">A::
  A()
   :ns1::B(),
    m_apc(GetD(), GetE()),
  { moreCode }
</code></pre>
<p>GetD() und GetE sind in der Klasse B definiert, von der meine Klasse ableitet.<br />
Soweit funktioniert das.</p>
</blockquote>
<p>Solange <code>GetD()</code> und <code>GetB()</code> nicht virtuell sind, ist das kein Problem. Der dynamische Aufruf virtueller Funktionen im Konstruktor oder Destruktor führt allerdings zu undefiniertem Verhalten.</p>
<p>rewireable schrieb:</p>
<blockquote>
<p>kann ich in der initalisierungsliste auch funktionen der Klasse aufrufen?</p>
</blockquote>
<p>Ja (sowohl freie Funktionen, als auch statische und nicht-statische, nicht-virtuelle Memberfunktionen).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905039</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Mon, 31 May 2010 15:28:41 GMT</pubDate></item><item><title><![CDATA[Reply to initialisierungsliste entfernen? on Mon, 31 May 2010 15:31:46 GMT]]></title><description><![CDATA[<p>rewireable schrieb:</p>
<blockquote>
<p>kann ich in der initalisierungsliste auch funktionen der Klasse aufrufen? aktuell ruf ich ja eine funktion der Oberklasse auf, deren konstruktor ist ja schon durchgelaufen, aber mein eigener konstruktor noch nicht....</p>
</blockquote>
<p>Statische Memberfunktionen kannst du problemlos aufrufen.</p>
<p>Nicht-statische Memberfunktionen kannst du im Prinzip auch aufrufen, aber tu's besser nicht. Du arbeitest dann mit einem Halbfertig erstellten Objekt. Man kann sich zwar genau ausrechnen, wann welche Membervariablen verfügbar sind, jedoch schreit dies geradezu nach Problemen wenn man später mal etwas Ändern will. Man stelle sich vor, jemand anderes ändert später mal die benutzte Funktion und benutzt dabei nicht initialisierte Member, weil er vorher nicht im ganzen Programmcode danach sucht, ob diese Funktion eventuell in einer Initialisierungsliste benutzt wird.</p>
<p>edit: Ach ja, die Problematik mit virtual habe ich ganz vergessen. Siehe Nexus Beitrag zu dem Thema.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1905040</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1905040</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 31 May 2010 15:31:46 GMT</pubDate></item></channel></rss>