<?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[Membervariablen verschwinden]]></title><description><![CDATA[<p>Hallo,</p>
<p>es ist mal wieder ein mir unerklärliches Problem aufgetaucht:</p>
<p>Ich habe zwei Konstruktoren</p>
<pre><code class="language-cpp">settings_reader::settings_reader(string filename)
{
	etc_lib ETC;
	if (ETC.file_exists(filename))
		settings_reader(filename, true);
	else
		settings_reader(filename, false);
}

settings_reader::settings_reader(string filename, bool read_settingfile)
{
	m_filename = filename;
	if (read_settingfile)
		read_settings();
}
</code></pre>
<p>Ich rufe normalerweise den ersten Konstruktor auf. Der prüft, ob die Datei existiert und leitet dann an den zweiten Konstruktor um.</p>
<p>Wenn ich nun gleich danach die Membervariable m_filename abrufe, ist sie leer.</p>
<p>In einer anderen Methode wird ebenfalls eine Membervariable editiert. Vor dem Verlassen der Methode ist der Inhalt da, wenn ich gleich nach dem Beenden der Methode den Inhalt abfrage, ist er weg..</p>
<p>Wenn ich zusätzlich m_filename auch im ersten Konstruktor den Wert zu weise, kann ich die Variable später auch wunderbar auslesen.</p>
<p>Darf denn der erste Konstruktor keinen zweiten aufrufen?</p>
<p>Ich danke euch schon mal.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/299454/membervariablen-verschwinden</link><generator>RSS for Node</generator><lastBuildDate>Thu, 13 Aug 2026 06:12:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/299454.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 11 Feb 2012 14:14:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Membervariablen verschwinden on Sat, 11 Feb 2012 14:16:20 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>es ist mal wieder ein mir unerklärliches Problem aufgetaucht:</p>
<p>Ich habe zwei Konstruktoren</p>
<pre><code class="language-cpp">settings_reader::settings_reader(string filename)
{
	etc_lib ETC;
	if (ETC.file_exists(filename))
		settings_reader(filename, true);
	else
		settings_reader(filename, false);
}

settings_reader::settings_reader(string filename, bool read_settingfile)
{
	m_filename = filename;
	if (read_settingfile)
		read_settings();
}
</code></pre>
<p>Ich rufe normalerweise den ersten Konstruktor auf. Der prüft, ob die Datei existiert und leitet dann an den zweiten Konstruktor um.</p>
<p>Wenn ich nun gleich danach die Membervariable m_filename abrufe, ist sie leer.</p>
<p>In einer anderen Methode wird ebenfalls eine Membervariable editiert. Vor dem Verlassen der Methode ist der Inhalt da, wenn ich gleich nach dem Beenden der Methode den Inhalt abfrage, ist er weg..</p>
<p>Wenn ich zusätzlich m_filename auch im ersten Konstruktor den Wert zu weise, kann ich die Variable später auch wunderbar auslesen.</p>
<p>Darf denn der erste Konstruktor keinen zweiten aufrufen?</p>
<p>Ich danke euch schon mal.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2179796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2179796</guid><dc:creator><![CDATA[Ulf]]></dc:creator><pubDate>Sat, 11 Feb 2012 14:16:20 GMT</pubDate></item><item><title><![CDATA[Reply to Membervariablen verschwinden on Sat, 11 Feb 2012 14:26:40 GMT]]></title><description><![CDATA[<p>Ulf schrieb:</p>
<blockquote>
<p>Darf denn der erste Konstruktor keinen zweiten aufrufen?</p>
</blockquote>
<p>Im neuen Standard gibt es soetwas. Ob das aber schon ein Compiler implementiert, weiß ich nicht. Ansonsten geht es nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2179799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2179799</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sat, 11 Feb 2012 14:26:40 GMT</pubDate></item><item><title><![CDATA[Reply to Membervariablen verschwinden on Sat, 11 Feb 2012 14:28:12 GMT]]></title><description><![CDATA[<p>Ulf schrieb:</p>
<blockquote>
<pre><code class="language-cpp">settings_reader(filename, true);
</code></pre>
</blockquote>
<p>Da erzeugst du ein lokales Objekt, das hat gar nichts mehr mit this zu tun.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2179800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2179800</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sat, 11 Feb 2012 14:28:12 GMT</pubDate></item><item><title><![CDATA[Reply to Membervariablen verschwinden on Sat, 11 Feb 2012 14:51:17 GMT]]></title><description><![CDATA[<p>Der VS2010 Compiler unterstützt das definitiv nicht, weil ich das vor Kurzem auch machen wollte. Stichwort: Konstruktorverkettung.</p>
<p>Workarround: Lagere den redundanten Code in eine Init() Function aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2179807</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2179807</guid><dc:creator><![CDATA[Flasher.d84]]></dc:creator><pubDate>Sat, 11 Feb 2012 14:51:17 GMT</pubDate></item><item><title><![CDATA[Reply to Membervariablen verschwinden on Sat, 11 Feb 2012 15:22:00 GMT]]></title><description><![CDATA[<p>ok, ich danke euch!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2179825</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2179825</guid><dc:creator><![CDATA[Ulf]]></dc:creator><pubDate>Sat, 11 Feb 2012 15:22:00 GMT</pubDate></item><item><title><![CDATA[Reply to Membervariablen verschwinden on Sat, 11 Feb 2012 15:43:27 GMT]]></title><description><![CDATA[<p>Ulf schrieb:</p>
<blockquote>
<pre><code class="language-cpp">etc_lib ETC;
	if (ETC.file_exists(filename))
		settings_reader(filename, true);
	else
		settings_reader(filename, false);
</code></pre>
</blockquote>
<p>Das lässt sich auch kürzer schreiben:</p>
<pre><code class="language-cpp">settings_reader(filename, etc_lib().file_exists(filename));
</code></pre>
<p>Ändert natürlich nichts daran, dass du hier ein temporäres Objekt erstellst und nicht mehr auf this arbeitest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2179835</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2179835</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sat, 11 Feb 2012 15:43:27 GMT</pubDate></item></channel></rss>