<?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[this im Ctor übergeben an Member]]></title><description><![CDATA[<p>Guten Abend!</p>
<p>Ich habe folgende Struktur (vereinfacht):</p>
<pre><code>class Converter {
private:
    Database     mDatabase;
...
};

class Database {
private:
    Converter&amp;  mConverter;
public:
    Database(Converter&amp; converter) : mConverter(converter) { }
};
</code></pre>
<p>Der Converter hält eine Database und die Database kennt quasi ihren parent Converter.</p>
<p>Im Ctor vom Converter initialisiere ich nun mDatabase mit this:</p>
<pre><code>Converter::Converter() :
mDatabase(*this) { } // Diese Zeile gibt ein Warning
</code></pre>
<p>Das führt zu folgendem Warning:</p>
<blockquote>
<p>warning C4355: 'this' : used in base member initializer list</p>
</blockquote>
<p>Ich verstehe das Warning, weil es ja prinzipiell gefährlich ist this im Ctor zu benutzen. Aber in meinem Fall wird es ja ausschließlich zur Initialisierung von Database benutzt und es findet kein Methodenaufruf statt oder so.</p>
<p>Frage1: Ist der Code in meinem Fall ok?<br />
Frage2: Wie unterdrücke ich dieses Warning am besten?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/328947/this-im-ctor-übergeben-an-member</link><generator>RSS for Node</generator><lastBuildDate>Tue, 07 Jul 2026 04:25:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/328947.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 01 Nov 2014 15:07:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to this im Ctor übergeben an Member on Sat, 01 Nov 2014 15:07:30 GMT]]></title><description><![CDATA[<p>Guten Abend!</p>
<p>Ich habe folgende Struktur (vereinfacht):</p>
<pre><code>class Converter {
private:
    Database     mDatabase;
...
};

class Database {
private:
    Converter&amp;  mConverter;
public:
    Database(Converter&amp; converter) : mConverter(converter) { }
};
</code></pre>
<p>Der Converter hält eine Database und die Database kennt quasi ihren parent Converter.</p>
<p>Im Ctor vom Converter initialisiere ich nun mDatabase mit this:</p>
<pre><code>Converter::Converter() :
mDatabase(*this) { } // Diese Zeile gibt ein Warning
</code></pre>
<p>Das führt zu folgendem Warning:</p>
<blockquote>
<p>warning C4355: 'this' : used in base member initializer list</p>
</blockquote>
<p>Ich verstehe das Warning, weil es ja prinzipiell gefährlich ist this im Ctor zu benutzen. Aber in meinem Fall wird es ja ausschließlich zur Initialisierung von Database benutzt und es findet kein Methodenaufruf statt oder so.</p>
<p>Frage1: Ist der Code in meinem Fall ok?<br />
Frage2: Wie unterdrücke ich dieses Warning am besten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2425273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425273</guid><dc:creator><![CDATA[BAYvBVB]]></dc:creator><pubDate>Sat, 01 Nov 2014 15:07:30 GMT</pubDate></item><item><title><![CDATA[Reply to this im Ctor übergeben an Member on Sat, 01 Nov 2014 15:22:05 GMT]]></title><description><![CDATA[<p>Weißt bestimmt auf eine Designschwäche hin.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2425275</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425275</guid><dc:creator><![CDATA[verweiß]]></dc:creator><pubDate>Sat, 01 Nov 2014 15:22:05 GMT</pubDate></item><item><title><![CDATA[Reply to this im Ctor übergeben an Member on Sat, 01 Nov 2014 15:31:30 GMT]]></title><description><![CDATA[<p>BAYvBVB schrieb:</p>
<blockquote>
<p>Frage1: Ist der Code in meinem Fall ok?</p>
</blockquote>
<p>Solange die Referenz niemand verwendet, bevor der <code>Converter</code> vollständig konstruiert ist, ist es ok.</p>
<p>BAYvBVB schrieb:</p>
<blockquote>
<p>Frage2: Wie unterdrücke ich dieses Warning am besten?</p>
</blockquote>
<p><code>#pragma warning( disable : 4335 )</code><br />
Bleibt anzumerken, daß diese Warnung standardmäßig garnicht aktiviert ist - zumindest nicht in VS 2013.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2425277</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425277</guid><dc:creator><![CDATA[Swordfish]]></dc:creator><pubDate>Sat, 01 Nov 2014 15:31:30 GMT</pubDate></item><item><title><![CDATA[Reply to this im Ctor übergeben an Member on Sat, 01 Nov 2014 15:36:03 GMT]]></title><description><![CDATA[<p>Swordfish schrieb:</p>
<blockquote>
<p>BAYvBVB schrieb:</p>
<blockquote>
<p>Frage1: Ist der Code in meinem Fall ok?</p>
</blockquote>
<p>Solange die Referenz niemand verwendet, bevor der <code>Converter</code> vollständig konstruiert ist, ist es ok.</p>
<p>BAYvBVB schrieb:</p>
<blockquote>
<p>Frage2: Wie unterdrücke ich dieses Warning am besten?</p>
</blockquote>
<p><code>#pragma warning( disable : 4335 )</code><br />
Bleibt anzumerken, daß diese Warnung standardmäßig garnicht aktiviert ist - zumindest nicht in VS 2013.</p>
</blockquote>
<p>Danke für die Antwort! <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="🙂"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2425279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425279</guid><dc:creator><![CDATA[BAYvBVB]]></dc:creator><pubDate>Sat, 01 Nov 2014 15:36:03 GMT</pubDate></item><item><title><![CDATA[Reply to this im Ctor übergeben an Member on Sat, 01 Nov 2014 15:38:15 GMT]]></title><description><![CDATA[<blockquote>
<p>weil es ja prinzipiell gefährlich ist this im Ctor zu benutzen.</p>
</blockquote>
<p>Nein. Es ist prinzipiell gefährlich <code>this</code> in der Initialisierungsliste zu benutzen. Weil Member oder Basisklassen vor gewissen Zeitpunkten uninitialisiert sind.</p>
<blockquote>
<p>Ist der Code in meinem Fall ok?</p>
</blockquote>
<p>Ja. (Auch wenn du wahrscheinlich einen Tippfehler in der Definition eines Members von <code>Converter</code> hast <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>
<blockquote>
<p>Wie unterdrücke ich dieses Warning am besten?</p>
</blockquote>
<p>Kannst du nicht. Vielleicht gibt es ein Pragma welches die Warnung versteckt.</p>
<p>Edit: Hätte wohl keine Pause machen sollen bevor ich den Post abgeschickt habe...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2425280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425280</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Sat, 01 Nov 2014 15:38:15 GMT</pubDate></item><item><title><![CDATA[Reply to this im Ctor übergeben an Member on Mon, 03 Nov 2014 01:09:57 GMT]]></title><description><![CDATA[<p>Man kann eine GetThis Memberfunktion machen und dann</p>
<pre><code class="language-cpp">Foo::Foo()
   : m_bar(GetThis())
</code></pre>
<p>In diesem speziellen Fall würde ich aber auch sagen: fehldesign.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2425485</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425485</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 03 Nov 2014 01:09:57 GMT</pubDate></item><item><title><![CDATA[Reply to this im Ctor übergeben an Member on Tue, 04 Nov 2014 14:51:00 GMT]]></title><description><![CDATA[<p>Sowas ist ganz natuerliches Design, brauch ich immer wieder mal. Ergo: Dumme Warning disablen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2425755</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2425755</guid><dc:creator><![CDATA[Kellerautomat]]></dc:creator><pubDate>Tue, 04 Nov 2014 14:51:00 GMT</pubDate></item></channel></rss>