<?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[undefiniertes Element in abgeleiteter Klasse (innerhalb eines Templates)]]></title><description><![CDATA[<p>Ich verstehe leider überhaupt nicht, warum der Compiler (G++ 4.4.1) bei dem folgenden Code zwei Fehler meldet:</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class A
{
  public:
    class Base
    {
      public:
        int m_data1;
        int m_data2;
        int m_data3;
        int m_data4;
    };

    class Derived : public Base
    {
      public:
        Derived(void) { m_data1 = 1;        // geht nicht
                        Base::m_data2 = 2;  // geht
                        m_data3 = 3;        // geht nicht
                        this-&gt;m_data4 = 4;  // geht
                }
    };
};

int main(void)
{
  A&lt;int&gt;::Derived d;
  return 0;
}
</code></pre>
<blockquote>
<p>e.cpp: In constructor 'A&lt;T&gt;::Derived::Derived()':<br />
e.cpp:17: error: 'm_data1' was not declared in this scope<br />
e.cpp:19: error: 'm_data3' was not declared in this scope</p>
</blockquote>
<p>Kann mir vielleicht jemand erklären, warum das so ist, zumal die Zeilen 18 und 20 problemlos kompiliert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/267305/undefiniertes-element-in-abgeleiteter-klasse-innerhalb-eines-templates</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 14:26:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267305.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 May 2010 21:55:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to undefiniertes Element in abgeleiteter Klasse (innerhalb eines Templates) on Fri, 21 May 2010 21:55:10 GMT]]></title><description><![CDATA[<p>Ich verstehe leider überhaupt nicht, warum der Compiler (G++ 4.4.1) bei dem folgenden Code zwei Fehler meldet:</p>
<pre><code class="language-cpp">template &lt;class T&gt;
class A
{
  public:
    class Base
    {
      public:
        int m_data1;
        int m_data2;
        int m_data3;
        int m_data4;
    };

    class Derived : public Base
    {
      public:
        Derived(void) { m_data1 = 1;        // geht nicht
                        Base::m_data2 = 2;  // geht
                        m_data3 = 3;        // geht nicht
                        this-&gt;m_data4 = 4;  // geht
                }
    };
};

int main(void)
{
  A&lt;int&gt;::Derived d;
  return 0;
}
</code></pre>
<blockquote>
<p>e.cpp: In constructor 'A&lt;T&gt;::Derived::Derived()':<br />
e.cpp:17: error: 'm_data1' was not declared in this scope<br />
e.cpp:19: error: 'm_data3' was not declared in this scope</p>
</blockquote>
<p>Kann mir vielleicht jemand erklären, warum das so ist, zumal die Zeilen 18 und 20 problemlos kompiliert werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900958</guid><dc:creator><![CDATA[mittelalter]]></dc:creator><pubDate>Fri, 21 May 2010 21:55:10 GMT</pubDate></item><item><title><![CDATA[Reply to undefiniertes Element in abgeleiteter Klasse (innerhalb eines Templates) on Sat, 22 May 2010 06:37:35 GMT]]></title><description><![CDATA[<p>der compiler ist müll</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1901003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1901003</guid><dc:creator><![CDATA[oberalter]]></dc:creator><pubDate>Sat, 22 May 2010 06:37:35 GMT</pubDate></item><item><title><![CDATA[Reply to undefiniertes Element in abgeleiteter Klasse (innerhalb eines Templates) on Sat, 22 May 2010 07:09:33 GMT]]></title><description><![CDATA[<p>mittelalter schrieb:</p>
<blockquote>
<p>Ich verstehe leider überhaupt nicht, warum der Compiler (G++ 4.4.1) bei dem folgenden Code zwei Fehler meldet:</p>
</blockquote>
<p>Weil die Auflösung innerhalb von Templates etwas anders läuft (auch wenn man sich um diesen Fehler streiten kann), ganz davon abgesehen das ich dieses Beispiel sehr bescheiden finde. Zu aller erst sollte auch immer die Klasse, die die Member bereit stellt, sich um ihre Initialisierung sorgen (und möglichst immer unter Verwendung der Initialisierungsliste). Zum anderen ziehe ich ganze, in Klassen verschachtelte Vererbungshirachien, ohnehin stark in Zweifel. Und zu guter letzt ist &quot;(void)&quot; ein C-Relikt, das in C++ eher unüblich ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1901004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1901004</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Sat, 22 May 2010 07:09:33 GMT</pubDate></item></channel></rss>