<?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[Template-Parameter an Basisklasse &amp;quot;weiterleiten&amp;quot;]]></title><description><![CDATA[<p>Mahlzeit,</p>
<p>folgender Code will sich nicht kompilieren lassen, und ich bin etwas ratlos, wo dabei das Problem liegen könnte:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
class Foo {
  protected:
    int _x;
};

template&lt;typename T&gt;
class Bar : public Foo&lt;T&gt; {
  public:
    Bar(int x) { _x = x; }
};
</code></pre>
<p>g++ sagt dazu:</p>
<p><a href="http://foo.cc" rel="nofollow">foo.cc</a>: In constructor ‘Bar&lt;T&gt;::Bar(int)’:<br />
<a href="http://foo.cc:10" rel="nofollow">foo.cc:10</a>: error: ‘_x’ was not declared in this scope</p>
<p>Wie kommt der auf sowas? <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>
<p>Interessanterweise funktioniert das ganze, sobald ich entweder aus Foo oder aus Bar eine normale, &quot;nicht-Template&quot;-Klasse mache. Ich denke, irgendwas übersehe ich hier, aber was?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/195928/template-parameter-an-basisklasse-quot-weiterleiten-quot</link><generator>RSS for Node</generator><lastBuildDate>Wed, 30 Sep 2026 05:38:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/195928.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 23 Oct 2007 16:15:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template-Parameter an Basisklasse &amp;quot;weiterleiten&amp;quot; on Tue, 23 Oct 2007 16:15:51 GMT]]></title><description><![CDATA[<p>Mahlzeit,</p>
<p>folgender Code will sich nicht kompilieren lassen, und ich bin etwas ratlos, wo dabei das Problem liegen könnte:</p>
<pre><code class="language-cpp">template&lt;typename T&gt;
class Foo {
  protected:
    int _x;
};

template&lt;typename T&gt;
class Bar : public Foo&lt;T&gt; {
  public:
    Bar(int x) { _x = x; }
};
</code></pre>
<p>g++ sagt dazu:</p>
<p><a href="http://foo.cc" rel="nofollow">foo.cc</a>: In constructor ‘Bar&lt;T&gt;::Bar(int)’:<br />
<a href="http://foo.cc:10" rel="nofollow">foo.cc:10</a>: error: ‘_x’ was not declared in this scope</p>
<p>Wie kommt der auf sowas? <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>
<p>Interessanterweise funktioniert das ganze, sobald ich entweder aus Foo oder aus Bar eine normale, &quot;nicht-Template&quot;-Klasse mache. Ich denke, irgendwas übersehe ich hier, aber was?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1390681</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1390681</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Tue, 23 Oct 2007 16:15:51 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Parameter an Basisklasse &amp;quot;weiterleiten&amp;quot; on Tue, 23 Oct 2007 16:25:46 GMT]]></title><description><![CDATA[<p>Benutz' Foo&lt;T&gt;::_x. Du musst halt ein wenig expliziter werden, damit der Compiler das schluckt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1390689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1390689</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Tue, 23 Oct 2007 16:25:46 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Parameter an Basisklasse &amp;quot;weiterleiten&amp;quot; on Tue, 23 Oct 2007 16:29:59 GMT]]></title><description><![CDATA[<p>Das liegt an der Namensauflösung bei Templates. Kannst ja mal die Suche bemühen, das Thema taucht öfter auf.</p>
<p>Beheben kannst du dein Problem wie folgt:</p>
<pre><code class="language-cpp">// Variante #1
template&lt;typename T&gt;
class Bar : public Foo&lt;T&gt; {
  using Foo&lt;T&gt;::_x;
  public:
    Bar(int x) { _x = x; }
};

// Variante #2
template&lt;typename T&gt;
class Bar : public Foo&lt;T&gt; {
  public:
    Bar(int x) { Foo&lt;T&gt;::_x = x; }
};

// Variante #3
template&lt;typename T&gt;
class Bar : public Foo&lt;T&gt; {
  public:
    Bar(int x) { this-&gt;_x = x; }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1390692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1390692</guid><dc:creator><![CDATA[finix]]></dc:creator><pubDate>Tue, 23 Oct 2007 16:29:59 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Parameter an Basisklasse &amp;quot;weiterleiten&amp;quot; on Tue, 23 Oct 2007 16:50:37 GMT]]></title><description><![CDATA[<p>Danke euch beiden, das hilft weiter!</p>
<p>Macht es Sinn zu fragen, warum das so ist? Mir will nämlich beim besten Willen kein Grund dafür einfallen...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1390703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1390703</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Tue, 23 Oct 2007 16:50:37 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Parameter an Basisklasse &amp;quot;weiterleiten&amp;quot; on Tue, 23 Oct 2007 21:41:08 GMT]]></title><description><![CDATA[<p>Denk dir folgendes Beispiel durch wenn du wissen willst wieso das Sinn macht:</p>
<pre><code class="language-cpp">template &lt;class T&gt; class base;

template &lt;&gt; class base&lt;int&gt;
{
protected:
    int a;
};

template &lt;&gt; class base&lt;short&gt;
{
};

int a;

template &lt;class T&gt; class derived : public base&lt;T&gt;
{
public:
    derived()
    {
        a = 123; // welches a bin ich?
    }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1390896</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1390896</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 23 Oct 2007 21:41:08 GMT</pubDate></item><item><title><![CDATA[Reply to Template-Parameter an Basisklasse &amp;quot;weiterleiten&amp;quot; on Wed, 24 Oct 2007 10:11:58 GMT]]></title><description><![CDATA[<p>Oha... Ja, das macht Sinn. Wenn auch auf eine etwas seltsame Art und Weise, wie das wohl nur C++ kann <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1391074</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1391074</guid><dc:creator><![CDATA[dooooomi]]></dc:creator><pubDate>Wed, 24 Oct 2007 10:11:58 GMT</pubDate></item></channel></rss>