<?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 funktionen mit Vererbung Problem (gcc)]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe ein Problem mit spezialisierten template functionen und Vererbung in gcc-4.0. Der unten gezeigte Code kann mit gcc-3.3 compiliert werden, jedoch nicht mit gcc-4.0. Da die standartkonformität von gcc von Version zu Version immer besser werden soll vermute ich das ich ein prinzipelles C++ Problem hier habe. Bin für Lösungsvorschläge dankbar.</p>
<pre><code class="language-cpp">#include &quot;iostream&quot;
template&lt;class T&gt; class TTB {

private:
	T* blubb;

public:
	TTB(){}

};

template&lt;class T&gt; class TT : public TTB&lt;T&gt; {

public:
	TT(){
		blubb = NULL;
	}

};

template&lt;&gt; class TT&lt;unsigned char&gt; : public TTB&lt;unsigned char&gt; {

private:

	unsigned char** blubb;

public:

	TT(){
		blubb = NULL;
	}
};
</code></pre>
<p>Gcc 4.0 Ausgabe:</p>
<pre><code>&gt; gcc-4.0 -c test.cpp
test.cpp: In constructor 'TT&lt;T&gt;::TT()':
test.cpp:17: error: 'blubb' was not declared in this scope
</code></pre>
<p>Wenn ich Zeile 17 zu</p>
<pre><code class="language-cpp">this-&gt;blubb=NULL;
</code></pre>
<p>ändere kann gcc 4 es kompilieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/163970/template-funktionen-mit-vererbung-problem-gcc</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 14:25:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/163970.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 03 Nov 2006 16:53:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template funktionen mit Vererbung Problem (gcc) on Fri, 03 Nov 2006 16:53:55 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich habe ein Problem mit spezialisierten template functionen und Vererbung in gcc-4.0. Der unten gezeigte Code kann mit gcc-3.3 compiliert werden, jedoch nicht mit gcc-4.0. Da die standartkonformität von gcc von Version zu Version immer besser werden soll vermute ich das ich ein prinzipelles C++ Problem hier habe. Bin für Lösungsvorschläge dankbar.</p>
<pre><code class="language-cpp">#include &quot;iostream&quot;
template&lt;class T&gt; class TTB {

private:
	T* blubb;

public:
	TTB(){}

};

template&lt;class T&gt; class TT : public TTB&lt;T&gt; {

public:
	TT(){
		blubb = NULL;
	}

};

template&lt;&gt; class TT&lt;unsigned char&gt; : public TTB&lt;unsigned char&gt; {

private:

	unsigned char** blubb;

public:

	TT(){
		blubb = NULL;
	}
};
</code></pre>
<p>Gcc 4.0 Ausgabe:</p>
<pre><code>&gt; gcc-4.0 -c test.cpp
test.cpp: In constructor 'TT&lt;T&gt;::TT()':
test.cpp:17: error: 'blubb' was not declared in this scope
</code></pre>
<p>Wenn ich Zeile 17 zu</p>
<pre><code class="language-cpp">this-&gt;blubb=NULL;
</code></pre>
<p>ändere kann gcc 4 es kompilieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1167839</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167839</guid><dc:creator><![CDATA[DirkK]]></dc:creator><pubDate>Fri, 03 Nov 2006 16:53:55 GMT</pubDate></item><item><title><![CDATA[Reply to Template funktionen mit Vererbung Problem (gcc) on Fri, 03 Nov 2006 17:37:26 GMT]]></title><description><![CDATA[<p>blubb ist eine private Membervariable von TTB - die kannst du eigentlich nur innerhalb der Basisklasse erreichen. Also mußt du auch in der Basisklasse den Wert zuweisen.</p>
<p>(möglich, daß du mit der expliziten Spezialisierung den Compiler verwirrt hast)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1167874</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167874</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 03 Nov 2006 17:37:26 GMT</pubDate></item><item><title><![CDATA[Reply to Template funktionen mit Vererbung Problem (gcc) on Fri, 03 Nov 2006 19:10:57 GMT]]></title><description><![CDATA[<p>Außerdem müsstest du bei Memberfunktionen/-variablen aus Templates, von welchen du ableitest, explizit angeben woher diese Variablen kommen. Also in deinem Fall auf</p>
<pre><code class="language-cpp">blubb = NULL;
</code></pre>
<p>ein</p>
<pre><code class="language-cpp">TTB&lt;T&gt;::blubb = NULL;
</code></pre>
<p>machen. Aber dann bleibt &quot;blubb&quot; immer noch private und der Compiler sollte wieder einen Fehler bringen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1167921</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167921</guid><dc:creator><![CDATA[bluecode]]></dc:creator><pubDate>Fri, 03 Nov 2006 19:10:57 GMT</pubDate></item><item><title><![CDATA[Reply to Template funktionen mit Vererbung Problem (gcc) on Fri, 03 Nov 2006 19:58:19 GMT]]></title><description><![CDATA[<p>Schon mal vielen Dank für die Antworten bisher.</p>
<p>Leider habe ich mich im ursprünglichen Posting vertan. Alles was ich dort in meinem reduzierten Beispiel als private angegegeben habe sollte eigentlich protected sein. Sorry. Der vollständigkeithaltber hänge ich den korrigierten Code nochmal unten an.</p>
<p>bluecode: Das wird genau mein Problem sein. Hast du eventuell eine Quelle für mich parat wo ich das nochmal ausführlicher anschauen kann. Templates sind noch etwas Neuland für mich.</p>
<pre><code class="language-cpp">#include &quot;iostream&quot;
template&lt;class T&gt; class TTB {

protected:
    T* blubb;

public:
    TTB(){}

};

template&lt;class T&gt; class TT : public TTB&lt;T&gt; {

public:
    TT(){
        blubb = NULL;
    }

};

template&lt;&gt; class TT&lt;unsigned char&gt; : public TTB&lt;unsigned char&gt; {

protected:

    unsigned char** blubb;

public:

    TT(){
        blubb = NULL;
    }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1167948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1167948</guid><dc:creator><![CDATA[DirkK]]></dc:creator><pubDate>Fri, 03 Nov 2006 19:58:19 GMT</pubDate></item><item><title><![CDATA[Reply to Template funktionen mit Vererbung Problem (gcc) on Sat, 04 Nov 2006 18:20:13 GMT]]></title><description><![CDATA[<p>Hallo,<br />
statt TTB&lt;T&gt;::blubb kannst du auch einfach this-&gt;blubb schreiben. Wichtig ist nur, dass du anzeigst, dass der Name ein &quot;dependent name&quot; ist, also von einem Template-Parameter abhängt.</p>
<p>Die beste Quelle zum Thema Templates ist imo &quot;C++ Templates - The complete guide&quot; von David Vandevoorde und Nicolai M. Josuttis.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1168449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1168449</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Sat, 04 Nov 2006 18:20:13 GMT</pubDate></item></channel></rss>