<?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[[gelöst] eine template-klasse friend einer anderen template-klasse (bei gleichem template-Typ)]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Klassentemplate A und ein Klassentemplate B, also</p>
<pre><code class="language-cpp">template &lt;class T&gt; class A {
private:
  A();
}

template &lt;class T&gt; class B {
public:
  B();
}
</code></pre>
<p>Wie man sieht, kann A nicht so einfach erstellt werden, das soll nämlich nur die Klasse B machen dürfen.</p>
<p>Außerdem soll nicht jede Template-Klasse vom Klassentemplate B jede Template-Klasse vom Klassentemplate A instanziieren dürfen, sondern nur Template-Klassen gleichen Typs.<br />
Das bedeutet also:<br />
Erlaubt:<br />
B vom Typ int darf A vom Typ int erstellen.<br />
Nicht erlaubt:<br />
B vom Typ string darf A vom Typ int erstellen.</p>
<p>Wie schreibt man dies in C++?</p>
<p>Schon versucht:</p>
<pre><code class="language-cpp">template &lt;class T&gt; class A {
  friend class B&lt;T&gt;;
}
</code></pre>
<pre><code class="language-cpp">template &lt;class T&gt; class A {
  template &lt;class T&gt; friend class B&lt;T&gt;;
}
</code></pre>
<pre><code class="language-cpp">template &lt;class T&gt; class A {
  template &lt;class T&gt; friend class B;
}
</code></pre>
<p>EDIT: Unten steht die richtige Lösung dafür.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/253874/gelöst-eine-template-klasse-friend-einer-anderen-template-klasse-bei-gleichem-template-typ</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 11:48:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/253874.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 08 Nov 2009 10:53:14 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [gelöst] eine template-klasse friend einer anderen template-klasse (bei gleichem template-Typ) on Mon, 09 Nov 2009 12:26:32 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Klassentemplate A und ein Klassentemplate B, also</p>
<pre><code class="language-cpp">template &lt;class T&gt; class A {
private:
  A();
}

template &lt;class T&gt; class B {
public:
  B();
}
</code></pre>
<p>Wie man sieht, kann A nicht so einfach erstellt werden, das soll nämlich nur die Klasse B machen dürfen.</p>
<p>Außerdem soll nicht jede Template-Klasse vom Klassentemplate B jede Template-Klasse vom Klassentemplate A instanziieren dürfen, sondern nur Template-Klassen gleichen Typs.<br />
Das bedeutet also:<br />
Erlaubt:<br />
B vom Typ int darf A vom Typ int erstellen.<br />
Nicht erlaubt:<br />
B vom Typ string darf A vom Typ int erstellen.</p>
<p>Wie schreibt man dies in C++?</p>
<p>Schon versucht:</p>
<pre><code class="language-cpp">template &lt;class T&gt; class A {
  friend class B&lt;T&gt;;
}
</code></pre>
<pre><code class="language-cpp">template &lt;class T&gt; class A {
  template &lt;class T&gt; friend class B&lt;T&gt;;
}
</code></pre>
<pre><code class="language-cpp">template &lt;class T&gt; class A {
  template &lt;class T&gt; friend class B;
}
</code></pre>
<p>EDIT: Unten steht die richtige Lösung dafür.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805071</guid><dc:creator><![CDATA[danowar]]></dc:creator><pubDate>Mon, 09 Nov 2009 12:26:32 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] eine template-klasse friend einer anderen template-klasse (bei gleichem template-Typ) on Sun, 08 Nov 2009 11:08:16 GMT]]></title><description><![CDATA[<p>*delete*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805075</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805075</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Sun, 08 Nov 2009 11:08:16 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] eine template-klasse friend einer anderen template-klasse (bei gleichem template-Typ) on Sun, 08 Nov 2009 11:07:26 GMT]]></title><description><![CDATA[<p>*delete*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805077</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805077</guid><dc:creator><![CDATA[Ad aCTa]]></dc:creator><pubDate>Sun, 08 Nov 2009 11:07:26 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] eine template-klasse friend einer anderen template-klasse (bei gleichem template-Typ) on Sun, 08 Nov 2009 11:07:17 GMT]]></title><description><![CDATA[<blockquote>
<p>Schon versucht:</p>
</blockquote>
<p>Und was waren die jeweiligen Fehlermeldungen? typischer Fall von &quot;geht nicht&quot;.</p>
<p>Der erste Veruch war schon richtig, B muss nur sichtbar sein bevor es für A als friend deklariert werden kann:</p>
<pre><code class="language-cpp">template &lt;class T&gt; class B;

template &lt;class T&gt; class A {
private:
  A();

  friend class B&lt;T&gt;;
};

template &lt;class T&gt; class B {
public:
  B();
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1805076</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805076</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 08 Nov 2009 11:07:17 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] eine template-klasse friend einer anderen template-klasse (bei gleichem template-Typ) on Sun, 08 Nov 2009 11:12:42 GMT]]></title><description><![CDATA[<p>Was hat das mit Factory zu tun? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p><em>Edit: pumuckl hat die Antwort schon gegeben... Ich war wohl etwas lange abwesend... <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="😉"
    /></em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805081</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805081</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 08 Nov 2009 11:12:42 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] eine template-klasse friend einer anderen template-klasse (bei gleichem template-Typ) on Sun, 08 Nov 2009 11:25:41 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<blockquote>
<p>Schon versucht:</p>
</blockquote>
<p>Und was waren die jeweiligen Fehlermeldungen? typischer Fall von &quot;geht nicht&quot;.</p>
</blockquote>
<p>Ups, stimmt, Fehlermeldungen wären toll. *hust*</p>
<p>Also:<br />
Schon versucht:</p>
<pre><code class="language-cpp">template &lt;class T&gt; class A {
  friend class B&lt;T&gt;;
}
</code></pre>
<p>Fehler:<br />
B ist kein Template.<br />
Template-Argument für struct B benötigt.</p>
<pre><code class="language-cpp">template &lt;class T&gt; class A {
  template &lt;class T&gt; friend class B&lt;T&gt;;
}
</code></pre>
<p>Fehler:<br />
B ist kein Template.<br />
Template-Argument für struct B benötigt.</p>
<pre><code class="language-cpp">template &lt;class T&gt; class A {
  template &lt;class T&gt; friend class B;
}
</code></pre>
<p>Fehler:<br />
überdeckt Templateparameter &lt;class T&gt;<br />
Deklaration von class T</p>
<p>War wohl typischer Fall von &quot;alle möglichen Kombinationen ausprobiert, nur nicht die richtige.&quot;</p>
<p>Hatte es nämlich auch schon mit Forward-Deklaration probiert <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":-("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805090</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805090</guid><dc:creator><![CDATA[danowar]]></dc:creator><pubDate>Sun, 08 Nov 2009 11:25:41 GMT</pubDate></item><item><title><![CDATA[Reply to [gelöst] eine template-klasse friend einer anderen template-klasse (bei gleichem template-Typ) on Sun, 08 Nov 2009 11:26:28 GMT]]></title><description><![CDATA[<p>wie gesagt, Nr 1 wäre richtig, mit Deklaration des templates B vorweg...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1805093</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1805093</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Sun, 08 Nov 2009 11:26:28 GMT</pubDate></item></channel></rss>