<?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 als Freund]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich möchte ein Klassen-Template zum Freund einer Klasse machen.... aber wie?</p>
<p>Das hier funktioniert nicht:</p>
<pre><code class="language-cpp">class a
{
private:
   int x;

   friend class b;
};

template &lt;typename T&gt; class b
{
public:
   void f(const a&amp; obj)
   {
      obj.x = 10;
   }
};
</code></pre>
<blockquote>
<p>c:\Repository\threadeventqueue.h(295): error C2989: 'CachedThreadEventQueue' : template class has already been defined as a non-template class</p>
</blockquote>
<p>Ich schaffe es nicht, die friend deklaration entsprechend zu modifizieren. Ich will aber auf keinen Fall für jede template-instanziierung eine eigene friend deklaration reinschreiben <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>
<p>Jemand ne idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/163637/template-als-freund</link><generator>RSS for Node</generator><lastBuildDate>Sun, 13 Sep 2026 12:27:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/163637.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 31 Oct 2006 16:09:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Template als Freund on Tue, 31 Oct 2006 16:09:28 GMT]]></title><description><![CDATA[<p>Hi!</p>
<p>Ich möchte ein Klassen-Template zum Freund einer Klasse machen.... aber wie?</p>
<p>Das hier funktioniert nicht:</p>
<pre><code class="language-cpp">class a
{
private:
   int x;

   friend class b;
};

template &lt;typename T&gt; class b
{
public:
   void f(const a&amp; obj)
   {
      obj.x = 10;
   }
};
</code></pre>
<blockquote>
<p>c:\Repository\threadeventqueue.h(295): error C2989: 'CachedThreadEventQueue' : template class has already been defined as a non-template class</p>
</blockquote>
<p>Ich schaffe es nicht, die friend deklaration entsprechend zu modifizieren. Ich will aber auf keinen Fall für jede template-instanziierung eine eigene friend deklaration reinschreiben <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>
<p>Jemand ne idee?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1165482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1165482</guid><dc:creator><![CDATA[Jordy]]></dc:creator><pubDate>Tue, 31 Oct 2006 16:09:28 GMT</pubDate></item><item><title><![CDATA[Reply to Template als Freund on Tue, 31 Oct 2006 16:35:31 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">template&lt;class T&gt;
class a 
{ 
private: 
   int x; 

   friend class T; 
}; 

template &lt;typename T&gt; class b 
{ 
public: 
   void f(const a&amp; obj) 
   { 
      obj.x = 10; 
   } 
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1165512</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1165512</guid><dc:creator><![CDATA[balduin]]></dc:creator><pubDate>Tue, 31 Oct 2006 16:35:31 GMT</pubDate></item><item><title><![CDATA[Reply to Template als Freund on Tue, 31 Oct 2006 16:46:37 GMT]]></title><description><![CDATA[<p>balduin schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template&lt;class T&gt;
class a 
{ 
private: 
   int x; 

   friend class T; 
}; 

template &lt;typename T&gt; class b 
{ 
public: 
   void f(const a&amp; obj) 
   { 
      obj.x = 10; 
   } 
};
</code></pre>
</blockquote>
<p>Grübel. Anders geht das nicht?</p>
<p>Zugegeben, besser als jeden Instanziierung von b als friedn reinschreiben zu müssen.</p>
<p>Aber ich will eigentlich vermeiden &quot;a&quot; auch noch überall mit einem typenamen instanzieren zu müssen.</p>
<p>Mal abgesehen davon... erzeugt das nicht zusätzlichen Code? Hier würde doch (für jede Variation des Friend) eine neue Instanz des a-Templates erzeugt, oder nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1165521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1165521</guid><dc:creator><![CDATA[Jordy]]></dc:creator><pubDate>Tue, 31 Oct 2006 16:46:37 GMT</pubDate></item><item><title><![CDATA[Reply to Template als Freund on Tue, 31 Oct 2006 17:28:13 GMT]]></title><description><![CDATA[<p>Wenn du eine Template Klasse hast, musst du diese auch als Template angeben.</p>
<pre><code class="language-cpp">class a
{
private:
   int x;

   template &lt;typename T&gt;
   friend class b;
};

template &lt;typename T&gt; class b
{
public:
   void f(const a&amp; obj)
   {
      obj.x = 10;
   }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1165576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1165576</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Tue, 31 Oct 2006 17:28:13 GMT</pubDate></item><item><title><![CDATA[Reply to Template als Freund on Wed, 01 Nov 2006 15:13:54 GMT]]></title><description><![CDATA[<p>Jordy schrieb:</p>
<blockquote>
<p>balduin schrieb:</p>
<blockquote>
<pre><code class="language-cpp">template&lt;class T&gt;
class a 
{ 
private: 
   int x; 

   friend class T; 
}; 

template &lt;typename T&gt; class b 
{ 
public: 
   void f(const a&amp; obj) 
   { 
      obj.x = 10; 
   } 
};
</code></pre>
</blockquote>
<p>Grübel. Anders geht das nicht?</p>
</blockquote>
<p>Wie es richtig geht hat groovemaster ja bereits beschrieben. Die zitierte Variante ist hingegen nicht nur umständlch, sondern das friend class T; ist derzeit schlicht kein legales C++. Habe zwar schon häufiger gelesen, dass sich dies mit dem nächsten Standard ändern wird, aber bis zum nächsten Standard ist noch ein bischen Zeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1166326</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1166326</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Wed, 01 Nov 2006 15:13:54 GMT</pubDate></item><item><title><![CDATA[Reply to Template als Freund on Thu, 02 Nov 2006 08:36:32 GMT]]></title><description><![CDATA[<p>Verflixt nochmal.</p>
<pre><code class="language-cpp">template &lt;typename T&gt;
   friend class b;
</code></pre>
<p>War das erste, was ich probiert habe. Nur habe ich das &quot;friend&quot; an den Anfang der zeile gesetzt, nicht das &quot;template&quot;. Argh. Blind wie ein Maulwurf.</p>
<p>Vielen Dank nochmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1166711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1166711</guid><dc:creator><![CDATA[Jordy]]></dc:creator><pubDate>Thu, 02 Nov 2006 08:36:32 GMT</pubDate></item></channel></rss>