<?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[warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes Konstrukt:</p>
<pre><code class="language-cpp">class dialog;

class messagesAnDialog
{
   public:
      messagesAnDialog(dialog &amp;_dlg) : dlg(_dlg){};

   private:
      dialog &amp;dlg;
};

class dialog : mad(*this)
{
   ...

   private:
      messagesAnDialog mad;
};
</code></pre>
<p>Dies erzeugt die im Betreff zitierte Warnung. Frage ist: Kann ich die Warnung ignorieren, da messagesAnDialog keine Basisklasse von dialog ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/276541/warning-c4355-this-wird-in-initialisierungslisten-für-basisklasse-verwendet</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 08:55:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/276541.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Nov 2010 09:29:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet on Thu, 04 Nov 2010 09:29:16 GMT]]></title><description><![CDATA[<p>Hallo,<br />
ich habe folgendes Konstrukt:</p>
<pre><code class="language-cpp">class dialog;

class messagesAnDialog
{
   public:
      messagesAnDialog(dialog &amp;_dlg) : dlg(_dlg){};

   private:
      dialog &amp;dlg;
};

class dialog : mad(*this)
{
   ...

   private:
      messagesAnDialog mad;
};
</code></pre>
<p>Dies erzeugt die im Betreff zitierte Warnung. Frage ist: Kann ich die Warnung ignorieren, da messagesAnDialog keine Basisklasse von dialog ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974959</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 04 Nov 2010 09:29:16 GMT</pubDate></item><item><title><![CDATA[Reply to warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet on Thu, 04 Nov 2010 09:30:42 GMT]]></title><description><![CDATA[<p>Welche Sprache ist das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974960</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 04 Nov 2010 09:30:42 GMT</pubDate></item><item><title><![CDATA[Reply to warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet on Thu, 04 Nov 2010 09:33:35 GMT]]></title><description><![CDATA[<p>Zeige Code, den man kompilieren kann und der zu dem besagten Fehler führt. Nicht irgendwas was irgenndwie so ähnlich ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974963</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Thu, 04 Nov 2010 09:33:35 GMT</pubDate></item><item><title><![CDATA[Reply to warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet on Thu, 04 Nov 2010 09:51:48 GMT]]></title><description><![CDATA[<p>brotbernd schrieb:</p>
<blockquote>
<p>Zeige Code, den man kompilieren kann und der zu dem besagten Fehler führt. Nicht irgendwas was irgenndwie so ähnlich ist.</p>
</blockquote>
<pre><code class="language-cpp">class dialog;

class messagesAnDialog
{
   public:
      messagesAnDialog(dialog &amp;_dlg) : dlg(_dlg){};

   private:
      dialog &amp;dlg;
};

class dialog
{
   public:
   	dialog() : mad(*this){}

   private:
      messagesAnDialog mad;
};
</code></pre>
<p>Der g++ kompiliert das übrigens ohne Murren, cl vom Visual C++ Express 2008 bringt die genannte Warnung ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974964</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974964</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 04 Nov 2010 09:51:48 GMT</pubDate></item><item><title><![CDATA[Reply to warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet on Thu, 04 Nov 2010 09:53:30 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Welche Sprache ist das?</p>
</blockquote>
<p>Welche erwartest Du, wenn Du in einem C++ - Unterforum liest/postest?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974965</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974965</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 04 Nov 2010 09:53:30 GMT</pubDate></item><item><title><![CDATA[Reply to warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet on Thu, 04 Nov 2010 09:58:00 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>volkard schrieb:</p>
<blockquote>
<p>Welche Sprache ist das?</p>
</blockquote>
<p>Welche erwartest Du, wenn Du in einem C++ - Unterforum liest/postest?</p>
</blockquote>
<p>Ach, hier kommt vieles an.<br />
Und</p>
<pre><code class="language-cpp">class dialog : mad(*this)
</code></pre>
<p>sah mir nicht nach C++ aus.<br />
Hab jetzt total die Lust verloren, zu erklären, wozu die Warnung gut ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974967</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974967</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Thu, 04 Nov 2010 09:58:00 GMT</pubDate></item><item><title><![CDATA[Reply to warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet on Thu, 04 Nov 2010 10:02:00 GMT]]></title><description><![CDATA[<p>volkard schrieb:</p>
<blockquote>
<p>Hab jetzt total die Lust verloren, zu erklären, wozu die Warnung gut ist.</p>
</blockquote>
<p>Gut, daß das niemand wissen wollte.<br />
Vielleicht hast Du ja Lust, auf meine Frage (siehe 1. Posting) zu antworten.</p>
<p>PS Falls nicht, brauchst Du das hier nicht wieder extra kundzutun, einfaches Nicht-Posten hilft in dem Fall, den Thread etwas übersichtlicher zu halten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974968</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 04 Nov 2010 10:02:00 GMT</pubDate></item><item><title><![CDATA[Reply to warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet on Thu, 04 Nov 2010 10:05:18 GMT]]></title><description><![CDATA[<p>Wenn du this in einer Initialisierungsliste benutzt, dann ist das Objekt auf das sich this bezieht noch nicht vollständig initialisiert. Daher die Warnung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974970</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 04 Nov 2010 10:05:18 GMT</pubDate></item><item><title><![CDATA[Reply to warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet on Thu, 04 Nov 2010 10:05:28 GMT]]></title><description><![CDATA[<p>Ja kannst du.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974971</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974971</guid><dc:creator><![CDATA[Icematix]]></dc:creator><pubDate>Thu, 04 Nov 2010 10:05:28 GMT</pubDate></item><item><title><![CDATA[Reply to warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet on Thu, 04 Nov 2010 10:13:15 GMT]]></title><description><![CDATA[<p>Icematix schrieb:</p>
<blockquote>
<p>Ja kannst du.</p>
</blockquote>
<p>Danke Dir!<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/19375">@SeppJ</a>: Schon klar. Die Frage ist nur, wann ist das von Relevanz für mich, und wann nicht. Da es eine Warnung ist (und kein Fehler), kommt es wohl auf den Kontext an, und da ist mir nicht klar, in welchen Fällen man die Warnung ignorieren kann, und wann man einen echten Fehler produziert ... was in so einem Konstrukt vermutlich dann auch noch ein Fehler ist, der viel später in völlig anderem Zusammenhang zu Problemen führt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974975</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 04 Nov 2010 10:13:15 GMT</pubDate></item><item><title><![CDATA[Reply to warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet on Thu, 04 Nov 2010 10:19:53 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Die Frage ist nur, wann ist das von Relevanz für mich, und wann nicht. Da es eine Warnung ist (und kein Fehler), kommt es wohl auf den Kontext an, und da ist mir nicht klar, in welchen Fällen man die Warnung ignorieren kann, und wann man einen echten Fehler produziert ...</p>
</blockquote>
<p>Es kann beispielsweise zu Fehlern führen, wenn du im Konstruktor von messagesAnDialog noch auf die Referenz zugreift. Die Warnung als solche halte ich auch durchaus für sinnvoll.</p>
<p>Wobei ich nicht weiß ob &quot;*this&quot; an dieser Stelle wirklich sauber definiert ist, auch wenn diese nur dazu dient als Referenz übergeben zu werden (Ich gehe zwar davon aus, das dies klappt, nur weiß ich nicht ob dies auch vom Standard garantiert wird).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974977</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974977</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Thu, 04 Nov 2010 10:19:53 GMT</pubDate></item><item><title><![CDATA[Reply to warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet on Thu, 04 Nov 2010 10:24:06 GMT]]></title><description><![CDATA[<p>Benutzt du den Zeiger im Base Konstruktor ist es schlecht, speicherst du ihn nur in der Basisklasse um ihn später zu benutzen, dann ist es ok. Die Adresse des Objekts ist schon da, das Objekt aber noch nicht initialisiert: Adresse speichern ja, dereferenzieren nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974981</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Thu, 04 Nov 2010 10:24:06 GMT</pubDate></item><item><title><![CDATA[Reply to warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet on Thu, 04 Nov 2010 10:47:00 GMT]]></title><description><![CDATA[<p>Ja, soweit habe ich mich an anderer Stelle mittlerweile auch belesen können. In meinem Fall habe ich mit einem Base-Konstruktor allerdings überhaupt nichts zu tun. Ich denke aber, daß das nicht der entscheidende Punkt ist; da mein Objekt noch nicht vollständig initialisiert ist, ist es wahrscheinlich besser, im aufgerufenen Konstruktor-Body die Referenz nicht zu benutzen, egal ob es sich um eine Base-Class meiner Klasse handelt oder nicht.<br />
Oder aber maximal auf die bereits initialisierten Bestandteile zuzugreifen, die Reihenfolge der Initialisierung ist ja durch die Reihenfolge der Deklaration definiert.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14941">@asc</a>:<br />
Ja, darüber habe ich auch nachgedacht. Aber ich hoffe, daß der Speicherbereich für mein Objekt bereits definiert ist und nur die noch uninitialisierten Membervariablen noch nicht befüllt sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1974989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1974989</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Thu, 04 Nov 2010 10:47:00 GMT</pubDate></item><item><title><![CDATA[Reply to warning C4355: this&#x27;: wird in Initialisierungslisten für Basisklasse verwendet on Thu, 04 Nov 2010 15:17:33 GMT]]></title><description><![CDATA[<blockquote>
<p>Benutzt du den Zeiger im Base Konstruktor ist es schlecht, speicherst du ihn nur in der Basisklasse um ihn später zu benutzen, dann ist es ok. Die Adresse des Objekts ist schon da, das Objekt aber noch nicht initialisiert: Adresse speichern ja, dereferenzieren nein.</p>
</blockquote>
<p>stimmt schon. Prinzipiell tendiere ich aber dazu es dann lieber gleich ganz zu lassen, weil man spater unter umstaenden &quot;vergessen&quot; hat, wo denn die referenz, die man im Konstruktor kriegt eigentlich herkommt und dann doch mal ploetlich auf die idee kommt zu derefernzieren:</p>
<pre><code class="language-cpp">MyClass( SomeRef&amp; ref )
{
   //mhh darf ich nun ref benutzen oder nicht...???
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1975130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1975130</guid><dc:creator><![CDATA[TheBigW]]></dc:creator><pubDate>Thu, 04 Nov 2010 15:17:33 GMT</pubDate></item></channel></rss>