<?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[Templateklassen und Ableiten]]></title><description><![CDATA[<p>hallo,</p>
<p>VC2008 schluckt folgenden Code ohne Probleme, gcc 4.3.2 meckert dagegen.. Die Fehler habe ich in den Kommentaren dahinter geschrieben:</p>
<pre><code class="language-cpp">template&lt;class blub&gt;class foo
{
public:
	typedef blub fap;
	template&lt;class&gt;void dub()
	{
	}
};
template&lt;class blub&gt;class bar:
	public foo&lt;blub&gt;
{
public:
	fap f;/*- expected ';' before 'f'
			- expected nested-name-specifier  before 'fap'*/
	bar()
	{
		dub&lt;fap&gt;();/*- expected primary-expression before ')' token
					- 'fap' was not declared in this scope
					- 'dub' was not declared in this scope*/
	}
};
bar&lt;int&gt; b;
</code></pre>
<p>Was entspricht nun dem Standard? Fehler oder kein Fehler?<br />
Gibt es eine besser Möglichkeit, als vor jedem vererbten Funktionsaufruf/Typen foo&lt;blub&gt;::(template ) vorzuschreiben?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/231090/templateklassen-und-ableiten</link><generator>RSS for Node</generator><lastBuildDate>Sat, 26 Sep 2026 00:44:47 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/231090.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 06 Jan 2009 15:30:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Templateklassen und Ableiten on Tue, 06 Jan 2009 15:30:48 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>VC2008 schluckt folgenden Code ohne Probleme, gcc 4.3.2 meckert dagegen.. Die Fehler habe ich in den Kommentaren dahinter geschrieben:</p>
<pre><code class="language-cpp">template&lt;class blub&gt;class foo
{
public:
	typedef blub fap;
	template&lt;class&gt;void dub()
	{
	}
};
template&lt;class blub&gt;class bar:
	public foo&lt;blub&gt;
{
public:
	fap f;/*- expected ';' before 'f'
			- expected nested-name-specifier  before 'fap'*/
	bar()
	{
		dub&lt;fap&gt;();/*- expected primary-expression before ')' token
					- 'fap' was not declared in this scope
					- 'dub' was not declared in this scope*/
	}
};
bar&lt;int&gt; b;
</code></pre>
<p>Was entspricht nun dem Standard? Fehler oder kein Fehler?<br />
Gibt es eine besser Möglichkeit, als vor jedem vererbten Funktionsaufruf/Typen foo&lt;blub&gt;::(template ) vorzuschreiben?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640459</guid><dc:creator><![CDATA[RudolfRenntier]]></dc:creator><pubDate>Tue, 06 Jan 2009 15:30:48 GMT</pubDate></item><item><title><![CDATA[Reply to Templateklassen und Ableiten on Tue, 06 Jan 2009 18:28:08 GMT]]></title><description><![CDATA[<p>Du hast prinzipiell zwei Möglichkeiten:<br />
1. typename bar::fap bzw. bar::template dub&lt;fap&gt;()<br />
2. einmalig typedef typename foo&lt;blub&gt;::fap; using foo&lt;blub&gt;::dub;</p>
<p>Das entspricht dem Standard, da bei der Compiler sonst versucht im umgebendenen Namensraum versucht, die Symbole zu finden. Die Basisklasse kann vor der Instanziierung des Templates nicht genutzt werden, da noch eine Spezialisierung auftauchen könnte. Da wäre es ein Fehler, die Namen aus dem Template zu benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1640588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1640588</guid><dc:creator><![CDATA[viande]]></dc:creator><pubDate>Tue, 06 Jan 2009 18:28:08 GMT</pubDate></item></channel></rss>