<?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 Klasse zum Freudn einer template Klasse erklären]]></title><description><![CDATA[<p>Hi,<br />
ich habe folgendes Problem.<br />
Zwei Template Klassen A und B sind gegeben.<br />
Jetzt möchte ich, dass Klasse B Freund von Klasse A ist.<br />
Leider bekomme ich das nicht hin. Folgendes habe ich in einer PDF Datei gefunden.</p>
<pre><code>[b]How do I specify a friend template class?[/b]
Like that:

class A
{
  template&lt;class&gt; friend class B; 
  friend class B &lt;class T&gt;;
};

Alexis Angelidis (PhD) 2005-01-11
</code></pre>
<p>Aber das funktioniert nicht. Warscheinlich weil bei mir beide Klassen Template Klassen sind.</p>
<p>Weiß einer Rat?<br />
Ein Beispiel anhand dieser Klassen wäre super.</p>
<pre><code class="language-cpp">template&lt; class T &gt;
class A
{

};

template&lt; typename T &gt;
class B
{

};
</code></pre>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/214954/template-klasse-zum-freudn-einer-template-klasse-erklären</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 01:29:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/214954.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 04 Jun 2008 20:26:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template Klasse zum Freudn einer template Klasse erklären on Wed, 04 Jun 2008 20:26:03 GMT]]></title><description><![CDATA[<p>Hi,<br />
ich habe folgendes Problem.<br />
Zwei Template Klassen A und B sind gegeben.<br />
Jetzt möchte ich, dass Klasse B Freund von Klasse A ist.<br />
Leider bekomme ich das nicht hin. Folgendes habe ich in einer PDF Datei gefunden.</p>
<pre><code>[b]How do I specify a friend template class?[/b]
Like that:

class A
{
  template&lt;class&gt; friend class B; 
  friend class B &lt;class T&gt;;
};

Alexis Angelidis (PhD) 2005-01-11
</code></pre>
<p>Aber das funktioniert nicht. Warscheinlich weil bei mir beide Klassen Template Klassen sind.</p>
<p>Weiß einer Rat?<br />
Ein Beispiel anhand dieser Klassen wäre super.</p>
<pre><code class="language-cpp">template&lt; class T &gt;
class A
{

};

template&lt; typename T &gt;
class B
{

};
</code></pre>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1522804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522804</guid><dc:creator><![CDATA[sadsa]]></dc:creator><pubDate>Wed, 04 Jun 2008 20:26:03 GMT</pubDate></item><item><title><![CDATA[Reply to Template Klasse zum Freudn einer template Klasse erklären on Thu, 05 Jun 2008 01:24:33 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Der Code aus der PDF-Datei stimmt schon einigermaßen. Er zeigt auch die beiden Möglichkeiten auf ein Klassen-Templates als friend zu deklarieren.</p>
<p>Angenommen du hast das Klassentemplate B</p>
<pre><code class="language-cpp">template&lt; typename T &gt;
class B
{

};
</code></pre>
<ol>
<li>Dann kannst du einmal dafür sorgen, dass ALLE Instanzen des Templates B friend von allen Instanzen des Templates A sind:</li>
</ol>
<pre><code class="language-cpp">template&lt; class T &gt;
class A
{
    template &lt;class TT&gt; friend class B;

};
</code></pre>
<p>Man beachte die unterschiedlichen Template-Parameter T und TT.</p>
<ol start="2">
<li>Die zweite Möglichkeite ist, dass eine Instanz A mit einem bestimmten Typ nur die jeweilige Instanz B mit <strong>gleichem</strong> Typ zum friend hat.</li>
</ol>
<pre><code class="language-cpp">template&lt; class T&gt;
class A
{
    friend class B&lt;T&gt;;

};
</code></pre>
<p>Z.B. wäre B&lt;int&gt; friend von A&lt;int&gt; aber nicht friend von A&lt;string&gt;.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1522879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522879</guid><dc:creator><![CDATA[vic1986]]></dc:creator><pubDate>Thu, 05 Jun 2008 01:24:33 GMT</pubDate></item><item><title><![CDATA[Reply to Template Klasse zum Freudn einer template Klasse erklären on Thu, 05 Jun 2008 08:22:09 GMT]]></title><description><![CDATA[<p>evtl. ist das hier noch interessant.<br />
<a href="http://www.ica1.uni-stuttgart.de/Courses_and_Lectures/C++/script/node23.html#SECTION00531000000000000000" rel="nofollow">http://www.ica1.uni-stuttgart.de/Courses_and_Lectures/C++/script/node23.html#SECTION00531000000000000000</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1522983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1522983</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 05 Jun 2008 08:22:09 GMT</pubDate></item><item><title><![CDATA[Reply to Template Klasse zum Freudn einer template Klasse erklären on Thu, 05 Jun 2008 08:50:57 GMT]]></title><description><![CDATA[<p>vic1986 schrieb:</p>
<blockquote>
<ol start="2">
<li>Die zweite Möglichkeite ist, dass eine Instanz A mit einem bestimmten Typ nur die jeweilige Instanz B mit <strong>gleichem</strong> Typ zum friend hat.</li>
</ol>
<pre><code class="language-cpp">template&lt; class T&gt;
class A
{
    friend class B&lt;T&gt;;

};
</code></pre>
</blockquote>
<p>Eine friend Deklaration darf beliebige explizite Spezialisierungen benennen, denn das sind ganz normale Klassen oder Funktionen, nicht nur solche mit passendem Templateparameter. Eine Spezialisierung (explizit oder partiell) kann nicht deklariert werden, bevor das Primärtemplate deklariert wurde, also brauchen wir eine solche Deklaration zuvor.</p>
<pre><code class="language-cpp">template &lt;class T&gt; class B;
template&lt; class T&gt;
class A
{
    friend class B&lt;T&gt;;   // ok
    friend class B&lt;int&gt;; // ok
    friend class B&lt;T*&gt;;  // ok
};
</code></pre>
<p>Eine friend-Deklaration kann sich auf ein gesamtes Template beziehen, nicht aber auf partielle Spezialisierungen:</p>
<pre><code class="language-cpp">template&lt; class T &gt; class B;
template&lt; class T &gt;
class A
{
    template &lt;class TT&gt; friend class B; // ok
    template &lt;class TT&gt; friend class B&lt;TT*&gt;; // Fehler
    template &lt;class TT&gt; friend class B&lt;TT&gt;; // Fehler
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1523003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523003</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 05 Jun 2008 08:50:57 GMT</pubDate></item><item><title><![CDATA[Reply to Template Klasse zum Freudn einer template Klasse erklären on Thu, 05 Jun 2008 09:10:20 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>... Eine friend Deklaration darf beliebige explizite Spezialisierungen benennen ...</p>
</blockquote>
<p>Ja, wenn man meinen Beitrag liest, könnte man auf die Idee kommen, dass nur eine Spezialisierung mit demselben Typ möglich ist. Das hab ich etwas &quot;unglücklich&quot; ausgedrückt.</p>
<p>Danke für die Ergänzung. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523031</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523031</guid><dc:creator><![CDATA[vic1986]]></dc:creator><pubDate>Thu, 05 Jun 2008 09:10:20 GMT</pubDate></item><item><title><![CDATA[Reply to Template Klasse zum Freudn einer template Klasse erklären on Thu, 05 Jun 2008 19:00:50 GMT]]></title><description><![CDATA[<p>Vielen Dank <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Wäre vielleicht etwas fürs FAQ. Müsste nur die Überschrift angepasst werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1523619</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1523619</guid><dc:creator><![CDATA[sadsa]]></dc:creator><pubDate>Thu, 05 Jun 2008 19:00:50 GMT</pubDate></item></channel></rss>