<?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[[Anfängerfrage] Initialisierung von mehrdeutiger geerbter Variable]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin gerade dabei mir das Thema Vererbung reinzuziehen und bin jetzt, nachdem ich damit etwas rumprobiert habe, auf ein kleines Problem gestoßen. Und zwar mekert der Compiler, dass die Variable mehrdeutig ist (ist auch Absicht). Im Konstrukter hat dafür Klassenname::Variablenname gereicht. In der Initialisierungsliste funktioniert das aber weiß Gott wieso nicht. Wie muss ich da vorgehen?</p>
<pre><code>[cpp]

class CKlasse0
{
protected:
	int i1;
public:
	CKlasse0() : i1(17) { std::cout &lt;&lt; &quot;Beginn Klasse0&quot; &lt;&lt; std::endl; }
	~CKlasse0(){ std::cout &lt;&lt; &quot;Ende Klasse0&quot; &lt;&lt; std::endl; }
	void test0();
};

class CKlasse1
{
protected:
	int i1;
public:
	CKlasse1() : i1(5) { std::cout &lt;&lt; &quot;Beginn Klasse1&quot; &lt;&lt; std::endl; }
	~CKlasse1(){ std::cout &lt;&lt; &quot;Ende Klasse1&quot; &lt;&lt; std::endl; }
	void test1();
	void test2();
};

class CKlasse2 : public CKlasse1, public CKlasse0
{
public:
	void test3();
	void test4();
	CKlasse2() : CKlasse1::i1(23) { /*CKlasse1::i1 = 23*/ ; std::cout &lt;&lt; &quot;Beginn Klasse2&quot; &lt;&lt; std::endl; }
	~CKlasse2(){ std::cout &lt;&lt; &quot;Ende Klasse2&quot; &lt;&lt; std::endl; }
};
[/cpp]
</code></pre>
<p>Das was ich auskommentiert habe funktioniert. In der Initialiserungsliste kommt jedoch die Meldung i1 sei keine Memberklasse von CKlasse1. Nur der Grund dafür will mir nicht klar werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/281562/anfängerfrage-initialisierung-von-mehrdeutiger-geerbter-variable</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 14:58:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/281562.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 04 Feb 2011 06:36:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [Anfängerfrage] Initialisierung von mehrdeutiger geerbter Variable on Fri, 04 Feb 2011 06:38:02 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin gerade dabei mir das Thema Vererbung reinzuziehen und bin jetzt, nachdem ich damit etwas rumprobiert habe, auf ein kleines Problem gestoßen. Und zwar mekert der Compiler, dass die Variable mehrdeutig ist (ist auch Absicht). Im Konstrukter hat dafür Klassenname::Variablenname gereicht. In der Initialisierungsliste funktioniert das aber weiß Gott wieso nicht. Wie muss ich da vorgehen?</p>
<pre><code>[cpp]

class CKlasse0
{
protected:
	int i1;
public:
	CKlasse0() : i1(17) { std::cout &lt;&lt; &quot;Beginn Klasse0&quot; &lt;&lt; std::endl; }
	~CKlasse0(){ std::cout &lt;&lt; &quot;Ende Klasse0&quot; &lt;&lt; std::endl; }
	void test0();
};

class CKlasse1
{
protected:
	int i1;
public:
	CKlasse1() : i1(5) { std::cout &lt;&lt; &quot;Beginn Klasse1&quot; &lt;&lt; std::endl; }
	~CKlasse1(){ std::cout &lt;&lt; &quot;Ende Klasse1&quot; &lt;&lt; std::endl; }
	void test1();
	void test2();
};

class CKlasse2 : public CKlasse1, public CKlasse0
{
public:
	void test3();
	void test4();
	CKlasse2() : CKlasse1::i1(23) { /*CKlasse1::i1 = 23*/ ; std::cout &lt;&lt; &quot;Beginn Klasse2&quot; &lt;&lt; std::endl; }
	~CKlasse2(){ std::cout &lt;&lt; &quot;Ende Klasse2&quot; &lt;&lt; std::endl; }
};
[/cpp]
</code></pre>
<p>Das was ich auskommentiert habe funktioniert. In der Initialiserungsliste kommt jedoch die Meldung i1 sei keine Memberklasse von CKlasse1. Nur der Grund dafür will mir nicht klar werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2016370</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016370</guid><dc:creator><![CDATA[Keksschleuder]]></dc:creator><pubDate>Fri, 04 Feb 2011 06:38:02 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfängerfrage] Initialisierung von mehrdeutiger geerbter Variable on Fri, 04 Feb 2011 07:36:46 GMT]]></title><description><![CDATA[<p>Du kannst in einer Initialisierungsliste nur direkte Basisklassen-Konstruktoren oder aber direkte Member der eigenen Klasse initialisieren.</p>
<p>Du müßtest also für Klasse1 einen überladenen Konstruktor (mit 'int'-Parameter) zur Verfügung stellen und dort dann folgendermaßen initialisieren:</p>
<pre><code class="language-cpp">CKlasse2() : CKlasse1(23) { ... }
</code></pre>
<p>P.S. Laß mal das 'C' bei den Klassennamen weg...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2016377</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016377</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Fri, 04 Feb 2011 07:36:46 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfängerfrage] Initialisierung von mehrdeutiger geerbter Variable on Fri, 04 Feb 2011 07:59:35 GMT]]></title><description><![CDATA[<p>Ok, danke. Nur noch mal damit ich das auch richtig verstanden habe, du meinst:</p>
<pre><code>CKlasse1(int i) { i1 = i; }
CKlasse2() : CKlasse1(23) { }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2016383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016383</guid><dc:creator><![CDATA[Keksschleuder]]></dc:creator><pubDate>Fri, 04 Feb 2011 07:59:35 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfängerfrage] Initialisierung von mehrdeutiger geerbter Variable on Fri, 04 Feb 2011 08:06:25 GMT]]></title><description><![CDATA[<p>warum nicht so??</p>
<pre><code class="language-cpp">CKlasse1(int i) : i1(i)  {}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2016388</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016388</guid><dc:creator><![CDATA[Gucky]]></dc:creator><pubDate>Fri, 04 Feb 2011 08:06:25 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfängerfrage] Initialisierung von mehrdeutiger geerbter Variable on Fri, 04 Feb 2011 08:29:35 GMT]]></title><description><![CDATA[<p>Gucky schrieb:</p>
<blockquote>
<p>warum nicht so??</p>
<pre><code class="language-cpp">CKlasse1(int i) : i1(i)  {}
</code></pre>
</blockquote>
<p>Gute Frage, da hatte ich wohl eine Denkblockade.^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2016399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016399</guid><dc:creator><![CDATA[Keksschleuder]]></dc:creator><pubDate>Fri, 04 Feb 2011 08:29:35 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfängerfrage] Initialisierung von mehrdeutiger geerbter Variable on Fri, 04 Feb 2011 10:11:53 GMT]]></title><description><![CDATA[<p>Genau, das meinte ich (natürlich mit der Änderung von Gucky <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/2016443</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016443</guid><dc:creator><![CDATA[Th69]]></dc:creator><pubDate>Fri, 04 Feb 2011 10:11:53 GMT</pubDate></item><item><title><![CDATA[Reply to [Anfängerfrage] Initialisierung von mehrdeutiger geerbter Variable on Fri, 04 Feb 2011 14:03:48 GMT]]></title><description><![CDATA[<p>Gibts da nen Unterschied ausser weniger zu schreiben und übersichtlicher?</p>
<pre><code class="language-cpp">class Klasse0
{
protected:
    int i1;
public:
    Klasse0() : i1(17) {}
    Klasse0(int i) : i1(i) {}
};

class Klasse1
{
protected:
    int i1;
public:
    Klasse1(int i=17) : i1(i) {}
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2016535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2016535</guid><dc:creator><![CDATA[padreigh]]></dc:creator><pubDate>Fri, 04 Feb 2011 14:03:48 GMT</pubDate></item></channel></rss>