<?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[friend + Template-Klasse]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>am besten zuerst kurz mein Quellcodeausschnitt und anschließend die Erklärung.</p>
<pre><code class="language-cpp">template
&lt;
	int I,
	int J,
	int K
&gt;
class foo
{
	template
	&lt;
		int OtherI,
		int OtherJ
	&gt;
	friend class foo&lt;OtherI,OtherJ,K&gt;;

	public:
		foo()
		{
			temp = 5;
		}

		template
		&lt;
			int OtherI,
			int OtherJ
		&gt;
		foo(foo&lt;OtherI, OtherJ, K&gt; const &amp; ref)
			:temp (ref.temp)
		{
		}

	private:
		int temp;
};
</code></pre>
<p>Es geht um folgende Situation. Die Variable temp soll private deklariert sein und keine getter oder setter Funktionen besitzen. Gleichzeitig soll ein Konstruktur existieren, der ein Objekt der Template-Klasse foo entgegen nimmt, wo die Template-Parameter I,J unterschiedliche Werte gegenüber dem Klassen-Template besitzen kann, aber der Template-Parameter K gleich sein muss.</p>
<p>Mmmmh, irgendwie mit Worten doof zu beschreiben.</p>
<p>Der Compiler sagt mir: error: partial specialization 'foo&lt;OtherI, OtherJ, K&gt;' declared 'friend'</p>
<p>Hilft mir momentan aber nicht weiter.</p>
<p>Könnt ihr mir einen Tipp geben?</p>
<p>Viele Grüße<br />
MM</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/253019/friend-template-klasse</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 02:06:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/253019.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 27 Oct 2009 18:23:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to friend + Template-Klasse on Tue, 27 Oct 2009 18:23:12 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>am besten zuerst kurz mein Quellcodeausschnitt und anschließend die Erklärung.</p>
<pre><code class="language-cpp">template
&lt;
	int I,
	int J,
	int K
&gt;
class foo
{
	template
	&lt;
		int OtherI,
		int OtherJ
	&gt;
	friend class foo&lt;OtherI,OtherJ,K&gt;;

	public:
		foo()
		{
			temp = 5;
		}

		template
		&lt;
			int OtherI,
			int OtherJ
		&gt;
		foo(foo&lt;OtherI, OtherJ, K&gt; const &amp; ref)
			:temp (ref.temp)
		{
		}

	private:
		int temp;
};
</code></pre>
<p>Es geht um folgende Situation. Die Variable temp soll private deklariert sein und keine getter oder setter Funktionen besitzen. Gleichzeitig soll ein Konstruktur existieren, der ein Objekt der Template-Klasse foo entgegen nimmt, wo die Template-Parameter I,J unterschiedliche Werte gegenüber dem Klassen-Template besitzen kann, aber der Template-Parameter K gleich sein muss.</p>
<p>Mmmmh, irgendwie mit Worten doof zu beschreiben.</p>
<p>Der Compiler sagt mir: error: partial specialization 'foo&lt;OtherI, OtherJ, K&gt;' declared 'friend'</p>
<p>Hilft mir momentan aber nicht weiter.</p>
<p>Könnt ihr mir einen Tipp geben?</p>
<p>Viele Grüße<br />
MM</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799289</guid><dc:creator><![CDATA[MrMilk]]></dc:creator><pubDate>Tue, 27 Oct 2009 18:23:12 GMT</pubDate></item><item><title><![CDATA[Reply to friend + Template-Klasse on Tue, 27 Oct 2009 18:40:03 GMT]]></title><description><![CDATA[<p>Partielle Templatespezialisierungen als friends sind leider verboten. Ich weiß jetzt so aus dem Stand nicht, was der tiefere Grund dafür ist, ist aber so: Ganz spezialisiert oder gar nicht.</p>
<p>Somit ist auch die Lösung für dein Problem nicht gerade elegant: Mach das ganze template zum friend. Du kannst zusätzlich noch ein paar Compilezeit Assertions in den Konstruktor bauen, um sicherzugehen, dass die Templateparameter die von dir vorgegebenen Rahmenbedingungen erfüllen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1799294</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1799294</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 27 Oct 2009 18:40:03 GMT</pubDate></item></channel></rss>