<?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[Vererbung einer Funktion in einer Template-Klasse]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgendes Problem:<br />
Ich habe eine Oberklasse <strong>base</strong> mit einem Template-Parameter in der ich eine Funktion deklariere (<strong>dosomething ()</strong>). In der Unterklasse <strong>derived</strong>, die public von base erbt, möchte ich diese Funktion definieren und dabei auf gechützte Member der Oberklasse zugreifen.</p>
<p>Aus irgendeinem Grund funktioniert das nicht und ich bin ratlos warum. Ohne Template funktioniert alles einwandfrei.</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

template &lt;int dim&gt;
class base
{
	protected:
	int i, j;
	virtual void dosomething ();

	public:
	void set (int a, int b) { i = a; j = b; }
	void show () { cout &lt;&lt; i &lt;&lt; &quot; &quot; &lt;&lt; j &lt;&lt; endl; }
};

template &lt;int dim&gt;
class derived : public base&lt;dim&gt;
{
	protected:
	int k;
	void dosomething () { cout &lt;&lt; i*j &lt;&lt; endl; }

	public:
	void setk (){k = i*j; }
	void showk () {cout &lt;&lt; k &lt;&lt; endl; dosomething(); }
};

int main ()
{
	derived&lt;2&gt; ob;
	ob.set(2,3);
	ob.show ();

	ob.setk();
	ob.showk();

	return 0;
}
</code></pre>
<p>Mein Compiler meckert:</p>
<pre><code>test.cc: In Elementfunktion »void derived&lt;dim&gt;::dosomething()«:
test.cc:22:32: Fehler: »i« wurde in diesem Gültigkeitsbereich nicht definiert
test.cc:22:34: Fehler: »j« wurde in diesem Gültigkeitsbereich nicht definiert
test.cc: In Elementfunktion »void derived&lt;dim&gt;::setk()«:
test.cc:25:19: Fehler: »i« wurde in diesem Gültigkeitsbereich nicht definiert
test.cc:25:21: Fehler: »j« wurde in diesem Gültigkeitsbereich nicht definiert
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/325892/vererbung-einer-funktion-in-einer-template-klasse</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 16:18:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/325892.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 May 2014 18:37:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Vererbung einer Funktion in einer Template-Klasse on Thu, 22 May 2014 18:37:23 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe folgendes Problem:<br />
Ich habe eine Oberklasse <strong>base</strong> mit einem Template-Parameter in der ich eine Funktion deklariere (<strong>dosomething ()</strong>). In der Unterklasse <strong>derived</strong>, die public von base erbt, möchte ich diese Funktion definieren und dabei auf gechützte Member der Oberklasse zugreifen.</p>
<p>Aus irgendeinem Grund funktioniert das nicht und ich bin ratlos warum. Ohne Template funktioniert alles einwandfrei.</p>
<pre><code>#include &lt;iostream&gt;

using namespace std;

template &lt;int dim&gt;
class base
{
	protected:
	int i, j;
	virtual void dosomething ();

	public:
	void set (int a, int b) { i = a; j = b; }
	void show () { cout &lt;&lt; i &lt;&lt; &quot; &quot; &lt;&lt; j &lt;&lt; endl; }
};

template &lt;int dim&gt;
class derived : public base&lt;dim&gt;
{
	protected:
	int k;
	void dosomething () { cout &lt;&lt; i*j &lt;&lt; endl; }

	public:
	void setk (){k = i*j; }
	void showk () {cout &lt;&lt; k &lt;&lt; endl; dosomething(); }
};

int main ()
{
	derived&lt;2&gt; ob;
	ob.set(2,3);
	ob.show ();

	ob.setk();
	ob.showk();

	return 0;
}
</code></pre>
<p>Mein Compiler meckert:</p>
<pre><code>test.cc: In Elementfunktion »void derived&lt;dim&gt;::dosomething()«:
test.cc:22:32: Fehler: »i« wurde in diesem Gültigkeitsbereich nicht definiert
test.cc:22:34: Fehler: »j« wurde in diesem Gültigkeitsbereich nicht definiert
test.cc: In Elementfunktion »void derived&lt;dim&gt;::setk()«:
test.cc:25:19: Fehler: »i« wurde in diesem Gültigkeitsbereich nicht definiert
test.cc:25:21: Fehler: »j« wurde in diesem Gültigkeitsbereich nicht definiert
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2400391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2400391</guid><dc:creator><![CDATA[xehon]]></dc:creator><pubDate>Thu, 22 May 2014 18:37:23 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung einer Funktion in einer Template-Klasse on Thu, 22 May 2014 19:02:54 GMT]]></title><description><![CDATA[<p>Häufiges Problem bei Templates mit Vererbung. Daher spare ich mir eine eigene Antwort und verweise auf:<br />
<a href="http://www.parashift.com/c++-faq-lite/nondependent-name-lookup-members.html" rel="nofollow">http://www.parashift.com/c++-faq-lite/nondependent-name-lookup-members.html</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2400399</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2400399</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 22 May 2014 19:02:54 GMT</pubDate></item><item><title><![CDATA[Reply to Vererbung einer Funktion in einer Template-Klasse on Fri, 23 May 2014 11:42:38 GMT]]></title><description><![CDATA[<p>Danke, funktioniert alles!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2400498</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2400498</guid><dc:creator><![CDATA[xehon]]></dc:creator><pubDate>Fri, 23 May 2014 11:42:38 GMT</pubDate></item></channel></rss>